Dal problema al programma Galeandro B. – Londoni C. Londoni camilla-Galeandro Beatrice 1 Indice •Sequenza •selezione •Ciclo o iterazione • mappa Londoni camilla-Galeandro Beatrice 2 Sequenza •Calcola la media di tre numeri Pseudocodifica Flow-chart Debug codifica •Cerchio (area,circonferenza) Pseudocodifica Flow-chart Debug codifica •Rettangolo (area,perimetro) Pseudocodifica Flow-chart Londoni camilla-Galeandro Beatrice Debug codifica 3 Selezione • Trova il massimo di tre numeri Pseudocodifica Flow-chart Debug codifica • Definisci il triangolo Pseudocodifica Flow-chart Debug codifica Flow-chart Debug codifica • Reciproco Pseudocodifica Londoni camilla-Galeandro Beatrice 4 Ciclo o iterazione • mese per vero Pseudocodifica Flow-chart Debug • mese per falso Pseudocodifica codifica Flow-chart Debug Flow-chart Debug • spesa Pseudocodifica Londoni camilla-Galeandro Beatrice codifica 5 Pseudocodifica: calcola la media di tre 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 Londoni camilla-Galeandro Beatrice 6 Flow-chart: calcola la media di tre numeri inizio A,B,C M = (A+B+C)/3 M fine Londoni camilla-Galeandro Beatrice 7 Debug: Calcola la media di tre numeri Algoritmo media Debug scrivi (“inserisci tre numeri interi”); leggi (A,B,C); M = (A+B+C)/3; scrivi (“media =“,M); 1. Inserisci tre numeri interi 2. A4, B6, C8 3. 6(4+6+8)/3 4. Media = 6 Londoni camilla-Galeandro Beatrice 8 peseudocodifica: cerchio (area,circonferenza) Algoritmo cerchio Variabili Raggio numero reale,input A,C numero reale,output Costante Pigreco = 3,14 numero reale inizio Scrivi (“inserisci raggio”); leggi (“raggio”); A = pigreco*raggio^2; C = 2*pigreco*raggio; scrivi (“area =“,A); scrivi (“circonferenza =“,C); fine Londoni camilla-Galeandro Beatrice 9 Flow-chart: cerchio (area,circonferenza) inizio raggio pigreco*raggio^2 2*pigreco*raggio A C fine Londoni camilla-Galeandro Beatrice 10 Debug:cerchio (area,circonferenza) Algoritmo area,circonferenza Scrivi (“inserisci raggio”); leggi (“raggio”); A = pigreco*raggio^2; C = 2*pigreco*raggio; scrivi (“area =“,A); scrivi (“circonferenza =“,C); Debug 1. Inserisci raggio 2. Raggio5 3. 78,5pigreco*raggio^2 4. 31,42*pigreco*raggio 5. Area = 78,5 6. Circonferenza = 31,4 Londoni camilla-Galeandro Beatrice 11 pseudocodifica: rettangolo(area,perimetro) Algoritmo rettangolo Variabili B,H numerica,reale,I A,P numerica,reale,O Inizio scrivi(“inserisci la base e l’altezza”); leggi(B,H); A=B*H; P=2*(B+H); scrivi(“area=“,A); scrivi(“perimetro=“,P); fine Londoni camilla-Galeandro Beatrice 12 Flow-chart:rettangolo(area,perimetro) inizio B,H B*H 2*(B+H) A P fine Londoni camilla-Galeandro Beatrice 13 Debug:rettangolo(area,perimetro) Algoritmo rettangolo Debug scrivi(“inserisci la base e l’altezza”); leggi(B,H); A=B*H; P=2*(B+H); scrivi(“area=“,A); scrivi(“perimetro=“,P); 1. Inserisci la base e l’altezza 2. B 2,H 4 3. 8 B*H 4. 12 2*(B+H) 5. Area=8 6. Perimetro=12 Londoni camilla-Galeandro Beatrice 14 Pseudocodifica:trova il massimo di tre numeri Algoritmo massimo Variabili A,B,C numerica,intera,I Max 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 Londoni camilla-Galeandro Beatrice 15 Flow-chart:trova il massimo di tre numeri inizio A,B,C Max=A NO B>Max SI Max=B NO C>Max SI Max=C Max Londoni camilla-Galeandro fineBeatrice 16 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); Debug 1 1. Inserisci tre numeri 2. A 4,B 6,C 8 3. Debug 2 1. Inserisci tre numeri 2. A4, B 16, C 8 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 1. Inserisci tre numeri 2. A 4, B 4, C 4 2. A 14,B 6,C 8 3. Max = 4 3. Max = 14 4. 4>4 ? 4. 6>14 ? 5. 4>4 ? 5. 8>14 ? 6. Il massimo è = 4 Londoni camilla-Galeandro 6. Il massimo è = 14 Beatrice 17 Pseudocodifica:definisci il triangolo Algoritmo triangolo Variabili A,B,C numerica,intera,I 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 Londoni camilla-Galeandro Beatrice 18 Flow-chart: definisci triangolo inizio A,B,C no (A<>B) AND (B<>C) AND (A<>C) si scaleno no no (A = B) OR (B = C) OR (A = C) si isoscele ( A = B) AND (B = C) AND (A = C) si equilatero fine Londoni camilla-Galeandro Beatrice 19 Debug: definisci triangolo Debug 1 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 1. 2. 3. 4. 5. 6. Debug 3 Inserisci i tre lati del triangolo A 2, B 2, C 2 (2<>2) AND (2<>2) AND (2<>2) ? (F) (2 =2) OR (2 = 2) OR (2 = 2) ? (V) (2 = 2) AND (2 = 2) AND (2 = 2) ? (V) equilatero 1. Inserisci i tre lati del triangolo 2. A 2, B 3, C 6 3. (2<>3) AND (3<>6) AND (2<>6) ? (V) 4. Scaleno 5. (2 = 3) OR (3 = 6) OR (2 = 6) ? (F) 6. (2 = 3) AND (3 = 6) AND (2 = 6) ? (F) Debug 2 1. Inserisci tre lati del triangolo 2. A 2,B 2, C 6 3. (2<>3) AND (3<>6) AND (2<>6) ? (F) 4. (2 = 3) OR (3 = 6) OR (2 = 6) ? (v) 5. Isoscele 6. (2 = 3) AND (3 = 6) AND (2 = 6) ? (F) Londoni camilla-Galeandro Beatrice 20 Pseudocodifica: reciproco Algoritmo reciproco Variabili A numerica, intera, I Inizio scrivi (“inserisci un numero”); leggi (A); se ( A <> 0) allora scrivi (“1/”A); altrimenti scrivi(“errore”); fine se fine Londoni camilla-Galeandro Beatrice 21 Flow-chart: reciproco inizio A no (A<>0) errore si 1/A fine Londoni camilla-Galeandro Beatrice 22 Debug: reciproco Algoritmo reciproco Debug 1 scrivi (“inserisci un numero”); leggi (A); se ( A <> 0) allora scrivi (“1/”A); altrimenti scrivi(“errore”); fine se 1. Inserisci un numero 2. A 4 3. (4 <> 0) ? (V) 4. ¼ Debug 2 1. Inserisci un numero 2. A 0 3. (0 <>0) ? (F) 4. errore Londoni camilla-Galeandro Beatrice 23 Pseudocodifica: mese per vero Algoritmo mese Variabili M numerica, intera, I Inizio M = 0; esegui mentre ((M<=1) OR (M>=12)); scrivi (“inserisci il mese”); legge(M); se (M>0) AND (M<13) allora scrivi (“mese corretto”); altrimenti scrivi (“errore”); fine se; ripeti fine Londoni camilla-Galeandro Beatrice 24 FLOW-CHART: MESE per vero inizio M=0 F (M<1) OR (M>12) V M (M>0) AND (M<13) V F Mese corretto errore fine Londoni camilla-Galeandro Beatrice 25 Debug: mese per vero Algoritmo mese per vero M = 0; Debug per vero 1. M 0 2. 0<1 OR 0>12 ? (V) esegui mentre ((M<=1) OR (M>=12)); scrivi (“inserisci il mese”); legge(M); se (M>0) AND (M<13) allora scrivi (“mese corretto”); altrimenti scrivi (“errore”); fine se; ripeti Londoni camilla-Galeandro Beatrice 3. Inserisci mese 4. M14 5. Errore 6. 14<1 OR 14>12 ? (V) 7. Inserisci mese 8. M 6 9. Mese corretto 10. 6<1 OR 6 >12 ? (F) 26 Pseudocodifica: mese per falso Algoritmo mese per falso Variabili M numerica, intera, I Inizio ripeti; scrivi(“inserisci il mese”); leggi (M); se (M>0) AND (M<13) allora scrivi (“mese corretto”); altrimenti scrivi (“errore”); fine se; finché (M>0) AND (M<13); fine Londoni camilla-Galeandro Beatrice 27 Flow-chart: mese per falso Inizio M F V M>0 AND M< 13 Corretto Errato F M>0 AND M< 13 V Fine Londoni camilla-Galeandro Beatrice 28 Debug: mese per falso Algoritmo mese per falso Debug per falso 1. Inserisci mese 2. M 14 ripeti; scrivi(“inserisci il mese”); leggi (M); se (M>0) AND (M<13) allora scrivi (“mese corretto”); altrimenti scrivi (“errore”); fine se; finché (M>0) AND (M<13); 3. 14>0 AND 14<13 ? (F) 4. Errore 5. 14>0 AND 14<13 ? (F) 6. Inserisci mese 7. M 1 8. 1>0 AND 1<13 ? (V) 9. Mese corretto 10. 1>0 AND 1<13 ? (V) Londoni camilla-Galeandro Beatrice 29 Pseudocodifica: spesa Algoritmo spesa Variabili P numerica, reale,I Tot numerica, reale,O Inizio ripeti; scrivi (“ inserisci il prezzo”); leggi (P); se ( Londoni camilla-Galeandro Beatrice 30 Flow-chart: spesa inizio Londoni camilla-Galeandro Beatrice 31 Debug: spesa Debug Londoni camilla-Galeandro Beatrice 32 Codifica: calcola la media di tre numeri 'VARIABILI Dim primo, secondo, terzo, media As Integer 'Acquisizione dei valori dalle celle primo = Range("a1") secondo = Range("a2") terzo = Range("a3") 'Calcolo della media media = (primo + secondo + terzo) / 3 Range("c1") = media Londoni camilla-Galeandro Beatrice 33 Codifica: cerchio (area,circonferenza) 'VARIABILI Dim raggio, area, circonferenza As Single Const pigreco = 3.14 'AQUISIZIONE DEI VALORI DELLE CELLE raggio = Range("B1") 'CALCOLO IL VALORE DELLA CIRCONFERENZA E DELL'AREA circonferenza = (2 * 3.14 * raggio) area = (3.14 * raggio ^ 2) 'STAMPO NELLA CELLA B2 IL RISULTATO: CIRCONFERENZA Range("b2") = circonferenza 'STAMPO NELLA CELLA B3 IL RISULTATO : AREA Range("b3") = area Londoni camilla-Galeandro Beatrice 34 Codifica: rettangolo (area , perimetro) 'VARIABILI Dim base, altezza, perimetro, area As Integer 'ACQUISIZIONE DEI VALORI base = Range("a1") altezza = Range("a2") 'CALCOLO AREA E PERIMETRO area = (base * altezza) perimetro = 2 * (altezza + base) Range("c1") = area Range("c2") = perimetro Londoni camilla-Galeandro Beatrice 35 Codifica: massimo 'VARIABILI Dim primo, secondo As Integer Dim maggiore As Integer 'ACQUISIZIONE DEI VALORI DALLE CELLE primo = Cells (1, 2) secondo = Cells (2, 2) 'CONTROLLO DEI NUMERI (SELEZIONE) If primo > secondo Then maggiore = primo Else maggiore = secondo End If ' VISUALIZZA I NUMERI ORDINATI Cells(2, 4) = maggiore Londoni camilla-Galeandro Beatrice 36 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" Londoni camilla-Galeandro End If Beatrice 37 Codifica: reciproco '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 Londoni camilla-Galeandro Beatrice 38 Codifica: mese 'variabili Dim mese As Single 'acquisisci valori dalle celle mese = Range("b1") 'calcola mese giusto If (mese < 1) Or (mese > 12) Then Range("a3") = "errore" Else: Range("a3") = "mese corretto" End If Londoni camilla-Galeandro Beatrice 39 Codifica: spesa 'VARIABILI Dim i, totale, spesa As Integer 'QUANTI CONTA I NUMERI >20 totale = 0 'IL CONTATORE "i" CONTA QUANTE CELLE STO LEGGENDO For i = 2 To 6 spesa = Cells (i, 1) totale = totale + spesa Next Range("b8") = totale Londoni camilla-Galeandro Beatrice 40 mappa sequenza menu Selezione ciclo 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 Londoni camilla-Galeandro Beatrice 41