Dal problema al programma Quinza - Farina Indice Sequenza Selezione Ciclo e iterazione Dal problema al programma Quinza - Farina 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 Dal problema al programma Flow - chart Quinza - Farina Debug Codifica 3 Selezione Trova il massimo di tre numeri interi Pseudocodifica Flow - chart Debug Codifica Definisci il triangolo Pseudocodifica Flow - chart Debug Codifica Reciproco di un numero Pseudocodifica Flow - chart Dal problema al programma Debug Quinza - Farina Codifica 4 Ciclo e iterazione Mese per vero Pseudocodifica Flow - chart Debug Codifica Flow - chart Debug Codifica Pseudocodifica Flow - chart Debug Codifica Mese per falso Pseudocodifica Spesa Dal problema al programma Quinza - Farina 5 Pseudocodifica: Calcola la media di 3 numeri Algoritmo Media Variabili A, B, C M numerica, intera, input numerica, reale, output Inizio Scrivi (“Inserisci tre numeri interi”); Leggi (A, B, C); M = (A + B + C) / 3; Scrivi (“Media = “,M); Fine Dal problema al programma Quinza - Farina 6 Flown – Chart: Calcola la media di 3 numeri Inizio A, B, C M = ( A+B+C ) /3 M Fine Dal problema al programma Quinza - Farina 7 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); Dal problema al programma Debug 1. 2. 3. 4. Quinza - Farina Inserisci 3 numeri interi A 4, B 6, C 8 6 (4+6+8) / 3 Media = 6 8 Codifica: Calcola la media di 3 numeri 'VARIABILI Dim n1, n2, n3 As Single Dim media As Single 'ACQUISIZIONE VALORI DALLE CELLE n1 = Range("b1") n2 = Range("b2") n3 = Range("b3") 'CALCOLA LA MEDIA media = (n1 + n2 + n3) / 3 Range("b4") = media End Sub Dal problema al programma Quinza - Farina 9 Pseudocodifica: Calcola la circonferenza e l’area di un cerchio Algoritmo Cerchio Variabili Raggio Circonferenza Area Costante Pigreco = 3,14 Inizio numero reale, input numero reale, output numero reale, output numero reale Scrivi (“Inserisci Raggio”); Leggi (Raggio); Area = Pigreco*Raggio^2; Circonferenza = Pigreco*2*Raggio; Scrivi (“Area = “, Area); Scrivi (“Circonferenza =“, Circonferenza); Fine Dal problema al programma Quinza - Farina 10 Flown – Chart: Calcola la circonferenza e l’area di un cerchio Inizio Raggio A = Pigreco*R^2 C = 2 Pigreco*R Area, Circonferenza Dal problema al programma Fine Quinza - Farina 11 Debug: Calcola la circonferenza e l’area del cerchio Algoritmo circonferenza Debug e area 1. Inserisci il Raggio Scrivi (“Inserisci Raggio”); Leggi (Raggio); Area = Pigreco*Raggio^2 Circonferenza = Pigreco*2*Raggio Scrivi (“Area = “, Area) Scrivi (Circonferenza =“, Circonferenza); Dal problema al programma 2. 3. 4. 5. 6. R5 A 3,14*5^2 C 2*3,14*5 Area = 78,5 Circonferenza = 31,4 Quinza - Farina 12 Codifica: Calcola la circonferenza e l’area del cerchio 'VARIABILI Dim r, c, a As Single 'COSTANTI pigreco = 3.14 'ACQUISIZIONE VALORI DALLE CELLE r = Range("b1") 'CALCOLO L'AREA E LA CIRCONFERENZA DEL CERCHIO a = pigreco * r ^ 2 Range("b3") = area c = pigreco * 2 * r Range("b4") = circonferenza End Sub Dal problema al programma Quinza - Farina 13 Pseudocodifica: Calcola l’area e il perimetro di un rettangolo Algoritmo rettangolo Variabili Base Altezza Area Perimetro numero reale, input numero reale, input numero reale, output numero reale, output Inizio Scrivi (“Inserisci Base, Altezza”); Leggi (B, H); Area = B*H; Perimetro = (B+H)*2; Scrivi (“Area = “, A); Scrivi (“Perimetro =“, P); Fine Dal problema al programma Quinza - Farina 14 Flow – chart: Calcolare l’area e il perimetro di un rettangolo Inizio Base, Altezza A = B*H P = (B+H)*2 Area, Perimetro Dal problema al programma Fine Quinza - Farina 15 Debug: Calcola l’area e il perimetro di un rettangolo Algoritmo Rettangolo Scrivi (“Inserisci Base, Altezza”); Leggi (B, H); Area = B*H; Perimetro = (B+H)*2; Scrivi (“Area = “, A); Scrivi (“Perimetro =“, P); Dal problema al programma Debug 1. 2. 3. 4. 5. 6. Quinza - Farina Inserisci Base, Altezza B5 H2 A 5*2 P (5+2)*2 Area = 10 Perimetro = 14 16 Codifica: Calcola l’area e il perimetro di un rettangolo 'VARIABILI Dim B, H, P, A As Single 'ACQUISIZIONE VALORI DALLE CELLE B = Range("B1") H = Range("B2") 'CALCOLA IL PERIMETRO E L'AREA P = (B + H) * 2 Range("B3") = perimetro A=B*H Range("B4") = area End Sub Dal problema al programma Quinza - Farina 17 Pseudocodifica: Trova il massimo di 3 numeri Algorimo massimo Variabili A, B, C numerica, intera, input Max numerica, intera, output 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 Dal problema al programma Quinza - Farina 18 Flow – chart: trova il massimo di tre numeri Inizio interi A, B, C Max = A No B > Max Sì Max = B No B > Max Sì Max = B Max Dal problema al programma Quinza - Farina Fine 19 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); Dal problema al programma Debug 1 Debug 2 1. Inserisci tre numeri interi A4B6C8 Max = 4 6>4? Max 6 8>6? Max 8 Il massimo è = 8 2. 3. 4. 5. 6. 7. Inserisci tre numeri interi A 4 B 16 C 8 Max = 4 16 > 4 ? Max 16 8 > 16 ? Il massimo è =16 Debug 3 Debug 4 Inserisci tre numeri interi A 14 B 6 C 8 Max = 14 6 > 14 ? 8 > 14 ? Il massimo è =14 Quinza - Farina Inserisci tre numeri interi A4B4C4 Max = 4 4>4? 4>4? Il massimo è = 4 20 Codifica: Trova il massimo di tre numeri ‘VARIABILI Dim A, B, C, Max As Integer ‘ACQUISIZIONE DEI VALORI DALLE CELLE A = Range (“b1”) B = Range (“ b2”) C = Range (“b3”) ‘CALCOLA IL MASSIMO DI TRE NUMERI Max = A If (B > Max) Then Max = B End If (C > Max) Then Max = C Range (“b4”) = Max End Sub Dal problema al programma Quinza - Farina 21 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 Dal problema al programma Quinza - Farina Dato in input 3 lati di un triangolo, dire in output se il triangolo è: Scaleno Isoscele Equilatero 22 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 Dal problema al programma Quinza - Farina Fine 23 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 Dal problema al programma Debug 1 Debug 2 Inserisci tre lati del triangolo A4B6C8 4<> 6 AND 6 <> 8 AND 4 <> 8 ? V Scaleno 4 = 6 OR 6 = 8 OR 4 =8?F 4 = 6 AND 6 = 8 AND 4=8?F Inserisci tre lati del triangolo A4B4C8 4<> 4 AND 4 <> 8 AND 4 <> 8 ? F 4 = 4 OR 4 = 8 OR 4 =8?V Isolscele 4 = 4 AND 4 = 8 AND 4=8?F Debug 3 Quinza - Farina Inserisci tre lati del triangolo A4B4C4 4<> 4 AND 4 <> 4 AND 4 <> 4 ? F 4 = 4 OR 4 = 4 OR 4 =4?V Isoscele 4 = 4 AND 4 = 4 AND 4=4?V Equilatero 24 Codifica: Definisci il triangolo ‘VARIABILI Dim lato1, lato2, lato3 As Single ‘ACQUISIZIONE VALORI DALLE CELLE A = Range("b1") B = Range("b2") C = Range("b3") ‘DEFINISCI TRIANGOLO If (A <> B) And (B <> C) And (A <> C) Then Range("a5") = "scaleno" End If If (A = B) Or (B = C) Or (A = C) Then Range("a5") = "isoscele" End If If (A = B) And (B = C) Then Range("a5") = "equilatero" End If Dal problema al programma Quinza - Farina 25 Pseudocodifica: Reciproco di un numero Algoritmo Reciproco Variabili A numerica, intera, input Inizio Scrivi (“Inserisci un numero”); Leggi (A); Se (A<>0) allora Scrivi (“1/”A); altrimenti Scrivi (“Errore”); Fine Dal problema al programma Quinza - Farina 26 Flow – Chart: Reciproco di un numero Inizio A No A<>0 Errore Sì 1/A Fine Dal problema al programma Quinza - Farina 27 Debug: Reciproco di un numero Algoritmo Reciproco Variabili A numerica, intera, input Inizio Scrivi (“Inserisci un numero”); Leggi (A); Se (A<>0) allora Scrivi (1/A); altrimenti Scrivi (“Errore”); Fine Dal problema al programma Debug 1 Inserisci un numero A4 (4 <> 0) ? (V) ¼ Debug 2 Inserisci un numero A0 (0 <>0) ? (F) errore Quinza - Farina 28 Codifica: Reciproco di un numero ‘VARIABILI Dim A As integer Dim opposto ‘ACQUISIZIONE VALORI DALLE CELLE A = Range(“b1”) ‘CONTROLLO DEI NUMERI (SELEZIONE) If (A<>0) then Range(“b2”) = 1*A Range(“b2”) = A Else Range(“b2”) = errore End if End sub Dal problema al programma Quinza - Farina 29 Pseudocodifica: Mese per vero Algoritmo Mese Variabili M Mese Inizio M=0 esegui mentre [ (M > 1) or (M < 12)]; scrivi (“inserisci il Mese”); leggi (M) Se (M > 0) and (M < 13) allora scrivi (“Mese corretto”) Altrimenti (“Scrivi errore”) Fine se ripeti Fine Dal problema al programma Quinza - Farina 30 Flow – Chart: Mese per Inizio vero M=0 V [(M <1) or (M> 12)] V M F (M>0) and (M<13) Errore Dal problema al programma Ok Quinza - Farina Fine 31 Debug: Mese per vero Debug 1 Algoritmo Mese Variabili M Mese Inizio M=0 esegui mentre [ (M > 1) or (M < 12)]; scrivi (“inserisci il Mese”); leggi (M) Se (M > 0) and (M < 13) allora scrivi (“Mese corretto”) Altrimenti (“Scrivi errore”) Fine se ripeti Fine 1. M 0 2. O<1 or 0>12 ? (V) 3. Inserisci Mese 4. M 13 5. Errore 6. 13 <1 or 13 > 12? (V) 7. Inserisci Mese 8. M 7 9. Mese corretto 10. 7 <1 or 7 > 12 ?(F) Dal problema al programma Quinza - Farina 32 Codifica: Mese per vero ‘VARIABILI Dim mese As Single ‘ACQUISIZIONE DEI VALORI DALLE CELLE mese = Range("b1") ‘CALCOLA MESE CORRETTO If (mese < 1) Or (mese > 12) Then Range("a3") = "errore" Else: Range("a3") = "mese corretto" End If Dal problema al programma Quinza - Farina 33 Pseudocodifica: Mese per falso Algoritmo mese per falso Variabili Mese numerica, intera, I Inizio ripeti; scrivi(“inserisci il mese”); leggi (Mese); se (Mese>0) AND (Mese<13) allora scrivi (“mese corretto”); altrimenti scrivi (“errore”); fine se; finché (Mese>0) AND (Mese<13); fine Dal problema al programma Quinza - Farina 34 Flow – Chart: Mese per falso Inizio Mese F F V Mese>0 AND Mese< 13 Corretto Errato F F Mese>0 AND Mese< 13 VV Dal problema al programma Quinza Fine - Farina 35 Debug: Mese per falso Algoritmo mese per falso Variabili Mese numerica, intera, I Inizio ripeti; scrivi(“inserisci il mese”); leggi (Mese); se (Mese>0) AND (Mese<13) allora scrivi (“mese corretto”); altrimenti scrivi (“errore”); fine se; finché (Mese>0) AND (Mese<13); fine Debug per falso 1. Inserisci mese 2. Mese 14 3. 14>0 AND 14<13 ? (F) 4. Errore 5. 14>0 AND 14<13 ? (F) 6. Inserisci mese 7. Mese 1 8. 1>0 AND 1<13 ? (V) 9. Mese corretto 10. 1>0 AND 1<13 ? (V) Dal problema al programma Quinza - Farina 36 Codifica: Mese per falso Dal problema al programma Quinza - Farina 37 Pseudocodifica: Spesa Dal problema al programma Quinza - Farina 38 Flow – Chart: Spesa Dal problema al programma Quinza - Farina 39 Debug: Spesa Dal problema al programma Quinza - Farina 40 Codifica: Spesa 'VARIABILI Dim i, tot, spesa As Integer ' CONTA I NUMERI >20 tot = 0 'IL CONTATORE "i" CONTA QUANTE CELLE STO LEGGENDO For i = 2 To 6 spesa = Cells (i, 1) tot = tot + spesa Next Range("b8") = tot Dal problema al programma Quinza - Farina 41 Mappa sequenza Menu Selezione ciclo Dal problema al programma 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 vero pseudocodifica Flow-chart debug Mese falso pseudocodifica Flow-chart debug Spesa pseudocodifica Flow-chart debug Quinza - Farina 42