430 likes | 644 Views
Dal problema al programma. Mancarella Francesca Zuelli Lorenzo. Indice. Sequenza. Selezione. Ciclo o iterazione. Sequenza. Calcola la media di 3 numeri Pseudocodifica Flow-chart Debung Codifica. Cerchio (area,circonferenza) Pseudocodifica Flow-chart Debung Codifica.
E N D
Dal problema al programma Mancarella Francesca Zuelli Lorenzo
Indice • Sequenza • Selezione • Ciclo o iterazione Dal problema al programma
Sequenza • Calcola la media di 3 numeri PseudocodificaFlow-chartDebungCodifica • Cerchio (area,circonferenza) PseudocodificaFlow-chartDebungCodifica • Rettangolo (area,perimetro) PseudocodificaFlow-chartDebungCodifica Dal problema al programma
Selezione • Trova il massimo di 3 numeri PseudocodificaFlow-chartDebungCodifica • Definisci il triangolo PseudocodificaFlow-chartDebungCodifica • Reciproco di un numero PseudocodificaFlow-chartDebungCodifica Dal problema al programma
Ciclo o iterazione • Mese (per falso) PseudocodificaFlow-chartDebungCodifica • Mese (per vero) PseudocodificaFlow-chartDebung Codifica • Spesa PseudocodificaFlow-chartDebungCodifica Dal problema al programma
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 Dal problema al programma
inizio A, B, C M = (A+B+C) / 3 M fine Flow-chart: Calcola la media di 3 numeri Dal problema al programma
Debung: Calcola la media di 3 numeri • Debung • Inserisci tre numeri interi • A 4, B 6, C 8 • 6 (4 + 6 +8) / 3; • Media = 6 Algoritmo media Scrivi(“inserisci tre numeri interi”); Leggi(A, B, C); M = (A + B + C) / 3; Scrivi(“Media = “, M); Dal problema al programma
Codifica: Calcola la media di tre numeri Private Sub media_Click() 'VARIABILI Dim primonumero, secondonumero, terzonumero As Integer Dim Media As Integer 'ACQUISIZIONE DEI VALORI DELLE CELLE primonumero = Range("b2") secondonumero = Range("b3") terzonumero = Range("b4") 'CALCOLO IL VALORE DELLA MEDIA Media = (primonumero + secondonumero + terzonumero) / 3 'STAMPO IL VALORE DELLA MEDIA Range("b5") = Media End Sub Dal problema al programma
Pseudocodifica: Calcolare circonferenza e area di un cerchio di cui conosciamo il raggio Algoritmo cerchio Variabili raggio numero, reale, I Area,circonferenza numero, reale,O Costante Pigreco = 3,14 numero,reale inizio Scrivi(“Inserisci raggio”); Leggi(raggio); Area = (raggio^2*Pigreco); Circonferenza = (2*Pigreco*raggio); Scrivi(“Area = “, Area); Scrivi(“Circonferenza = “, Circonferenza); fine Dal problema al programma
inizio raggio Area = (Raggio^2*Pigreco) Circonferenza = (2*Raggio*Pigreco) Area Circonferenza fine Flow-chart: circonferenza e area Dal problema al programma
Debug:circonferenza e area • Debug • Inserisci raggio • raggio 10, Pigreco 3,14 • 31,4 (10^2*3,14); • 62.8 (2*3,14*10); • Area = 31,4 • Circonferenza = 62,8 Algoritmo cerchio Scrivi(“Inserisci raggio”); Leggi(raggio); Area = (raggio^2*Pigreco); Circonferenza = (2*Pigreco*raggio); Scrivi(“Area = “, Area); Scrivi(“Circonferenza = “, Circonferenza); Dal problema al programma
Codifica: Calcolare circonferenza e area Private Sub Cerchio_Click() ' VARIABILI Dim Raggio, Circonferenza, Area As Single ' COSTANTE Const pigreco = 3.14 'ACQUISIZIONE DEI VALORI DELLE CELLE Raggio = Range("b1") ' CALCOLO IL VALORE DELLA CIRCONFERENZA Circonferenza = pigreco * Raggio * 2 ' CALCOLO IL VALORE DELL'AREA Area = pigreco * Raggio * Raggio 'STAMPO NELLA CELLA B2 IL RISULTATO: CIRCONFERENZA Range("b2") = Circonferenza 'STAMPO NELLA CELLA B3 IL RISULTATO: AREA Range("b3") = Area End Sub Dal problema al programma
Pseudocodifica: Calcolare area e perimetro di un rettangolo Algoritmo rettangolo Variabili B,H numerica, reale, I A,2P numerica, reale,O inizio Scrivi(“Inserisci base,altezza”); Leggi(B,H); A = (B*H); 2P = (2B*2H); Scrivi(“ A = “ A); Scrivi (“ 2P = “ 2P); fine Dal problema al programma
inizio B,H Area = (B*H) Perimetro = (2B*2H) Area Perimetro fine Flow-chart: area e perimetro di un rettangolo Dal problema al programma
Debug: area e perimetro di un rettangolo • Debung • Inserisci base,altezza • B 10, H 5 • 50 (10*5); • 30 (2*10+2*5); • Area = 50 • Altezza = 30 Algoritmo rettangolo Scrivi(“Inserisci base,altezza”); Leggi(B,H); A = (B*H); 2P = (2*B+2*H); Scrivi(“ A = “ A); Scrivi (“ 2P = “ 2P); Dal problema al programma
Codifica: area e perimetro di un rettangolo Private Sub areaeperimetro_Click() 'VARIABILI Dim altezza, base As Integer Dim area, perimetro As Integer 'ACQUISIZIONE DEI VALORI DELLE CELLE altezza = Range("b2“) base = Range("b3") 'CALCOLO IL VALORE DEL PERIMETRO perimetro = (base * 2) + (altezza * 2) 'CALCOLO IL VALORE DELL'AREA area = base * altezza 'STAMPO IL VALORE DEL PERIMETRO Range("b6") = perimetro 'STAMPO IL VALORE DELL'AREA Range("b5") = area End Sub Dal problema al programma
Pseudocodifica: Trova il massimo di 3 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 Dal problema al programma
inizio A, B, C Max = A Si No B>Max Max = B No C>Max Si Max = C Max fine Flow-chart: trova il massimo tra 3 numeri interi Dal problema al programma
Debug: trova il massimo tra 3 numeri interi • Debug 1 • Inserisci tre numeri interi • A 4, B 6, C 8 • Max=4 • 6>4 ? • Max 6 • 8>6 ? • Max 8 • Il massimo è = 8 • Debug 2 • Inserisci tre numeri interi • A 4, B 16, C 8 • Max=4 • 16>4 ? • Max 16 • 8>16 ? • Il massimo è = 16 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 Se(“Il Massimo è = “, Max); • Debug 3 • Inserisci tre numeri interi • A 14, B 6, C 8 • Max=14 • 6>14 ? • 8>14 ? • Il massimo è = 14 • Debug 4 • Inserisci tre numeri interi • A 14, B 4, C 4 • Max=4 • 4>4 ? • 4>4 ? • Il massimo è = 4 Dal problema al programma
Codifica: trova il massimo di tre numeri Private Sub massimo_Click() 'VARIABILI Dim primonumero, secondonumero, terzonumero As Integer Dim massimo As Integer 'ACQUISIZIONE DEL VALORE DELLE CELLE primonumero = Range("b2") secondonumero = Range("b3") terzonumero = Range("b4") 'CONTROLLO DEI NUMERI (SELEZIONE) massimo = primonumero If (secondonumero > massimo) Then massimo = secondonumero End If If (terzonumero > massimo) Then massimo = terzonumero End If 'STAMPO IL VALORE DEL MASSIMO Range("b6") = massimo End Sub Dal problema al programma
Pseudocodifica: Definisci il triangolo • Dato in input 3 lati di un triangolo, dire in output se il triangolo è: • Scaleno • Isoscele • Equilatero 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 (C<>A) allora Scrivi(“Scaleno”); fine se Se (A<>B) OR (B<>C) OR (C<>A) allora Scrivi(“Isoscele”) fine se Se (A=B) AND (B=C) AND (A=C) allora Scrivi(“Equilatero”); fine se fine Dal problema al programma
inizio A, B, C (A<>B) AND (B<>C) AND (A<>B) (A=B) OR (B=C) OR (A=C) (A=B) AND (B=C) AND (A=C) fine Flow-chart: Definisci il triangolo Scaleno Isoscele Equilatero Dal problema al programma
Debug: Definisci iltriangolo • Debug 1 • Inserisci tre lati del triangolo • A 2, B 5, C 10 • (2<>5) AND (5<>10) AND (2<>10) ? (V) • Scaleno • (2=5) OR (5=10) OR (2=10) ? (F) • (2=5) AND (5=10) AND (2=10) ? (F) 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 (C<>A) allora Scrivi(“Scaleno”); fine se Se (A<>B) OR (B<>C) OR (C<>A) allora Scrivi(“Isoscele”) fine se Se (A=B) AND (B=C) AND (A=C) allora Scrivi(“Equilatero”); fine se fine • Debug 2 • Inserisci tre lati del triangolo • A 2, B 2, C 8 • (2<>2) AND (2<>8) AND (2<>8) ? (F) • (2=2) OR (2=8) OR (2=2) ? (V) • Isoscele • (2=2) AND (2=8) OR (2=2) ? (F) • Debug 3 • A 5, B 5, C 5 • (5<>5) AND (5<>5) AND (5<>5) ? (F) • (5=5) OR (5=5) OR (5=5) ? (V) • Isoscele • (5=5) AND (5=5) AND (5=5) ? (V) • Equilatero Dal problema al programma
Codifica: Definisci iltriangolo Private Sub Triangolo_Click() ' VARIABILI Dim primolato, secondolato, terzolato As Integer ' ACQUISIZIONE DEI VALORI DELLE CELLE primolato = Cells(1, 2) secondolato = Cells(2, 2) terzolato = Cells(3, 2) ' CONTROLLO DEI NUMERI (SELEZIONE) If (primolato <> secondolato And secondolato <> terzolato And terzolato <> primolato) Then Range("c1") = "scaleno" ElseIf (primolato = secondolato) And (secondolato = terzolato) And (terzolato = primolato) Then Range("c1") = "equilatero" ElseIf (primolato <> secondolato) Or (secondolato <> terzolato) Or (terzolato <> primolato) Then Range("c1") = "iscoscele" End If End sub Dal problema al programma
Pseudocodifica: Reciproco di un numero Algoritmo Reciproco Variabili A numerica, intera, I inizio Scrivi(“Inserisci un numero”); Leggi(A); Se (A<>0) allora Scrivi(“Il reciproco è: “,1/A) altrimenti Scrivi(“Errore”) fine Dal problema al programma
inizio A (A<>0) 1/A Errore fine Flow-chart: Reciproco di un numero Dal problema al programma
Debug: Reciproco di un numero • Debug 1 • Inserisci un numero • A 2 • (2<>0) ? (V) • Il reciproco è : ½ Algoritmo Reciproco Variabili A numerica, intera, I inizio Scrivi(“Inserisci un numero”); Leggi(A); Se (A<>0) allora Scrivi(“Il reciproco è: “,1/A) altrimenti Scrivi(“Errore”) fine • Debug 2 • Inserisci un numeri • A 0 • (0<>0) ? (F) • Errore Dal problema al programma
Codifica: Reciproco di un numero Private Sub reciproco_Click() 'VARIABILI Dim numero, reciproco, errore As Integer 'ACQUISIZIONE DEL VALORE DELLE CELLE numero = Range("b1") 'CONTROLLO DEI NUMERI (SELEZIONE) If (numero <> 0) Then Range("b3") = 1 / numero Else Range("b3") = "errore“ End If End Sub Dal problema al programma
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(“Mese inserito corretto”) Altrimenti Scrivi(“Errore,reinserire)” fine se finché((M>12) OR (M<1)) fine Dal problema al programma
inizio M no si (M>0) AND (M<13) ERRORE OK falso (M>0) AND (M<13) vero fine Flow-chart : Mese (per falso) Dal problema al programma
Debug : Mese (per falso) Debug 1. Inserisci mese 2. M 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 15. 10>0 AND 10<13 ? (V) 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)) Dal problema al programma
Codifica: Mese (per falso) Private Sub mese_Click() 'VARIABILI Dim mese, corretto, errore As Integer 'ACQUISIZIONE DEL VALORE DELLE CELLE mese = Range("b1") 'CONTROLLO DEI NUMERI (SELEZIONE) If (mese > 0) And (mese < 13) Then Range("c1") = "corretto" Else Range("c1") = "errore" End If End Sub Dal problema al programma
Pseudocodifica : Mese (per vero) Algoritmo mese Variabili M numerica,intera,I Inizio m=0 esegui mentre ((M>12) OR (M<1)) Scrivi(“Inserisci mese”); Leggi(M); Se(M>0) AND (M<13) allora Scrivi(“Mese inserito corretto”) Altrimenti Scrivi(“Errore,reinserire)” fine se fine Dal problema al programma
inizio M=0 falso (M<=0)or (M>12) vero M falso (M>0) AND (M<13) ERRORE OK fine Flow-chart : Mese (per vero) Dal problema al programma
Debug: Mese (per vero) • Debug • M 0 • 0<1 OR 0>12 ? (V) • Inserisci mese • M 14 • Errore, reinserire • 14<1 OR 14>12 ? (V) • Inserisci mese • M 6 • Mese inserito corretto • 6<1 OR 6>12 ? (F) Algoritmo mese Variabili M numerica,intera,I Inizio m=0 esegui mentre ((M>12) OR (M<1)) Scrivi(“Inserisci mese”); Leggi(M); Se(M>0) AND (M<13) allora Scrivi(“Mese inserito corretto”) Altrimenti Scrivi(“Errore,reinserire)” fine se fine Dal problema al programma
Pseudocodifica: Spesa 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 Dal problema al programma
Flow-chart : Spesa inizio T=0 P T=T+P P=0 T fine Dal problema al programma
Debug: Spesa 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 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 Dal problema al programma
Codifica: spesa Private Sub spesa_Click() Dim prodotto, tot As Single Dim i As Integer tot = 0 For i = 1 To 5 prodotto = Cells(i, 2) tot = tot + prodotto Next Range("b7") = tot End Sub Dal problema al programma
Pseudocodifica Flow-chart Media Sequenza Cerchio Pseudocodifica Flow-chart Rettangolo Pseudocodifica Flow-chart Massimo Pseudocodifica Flow-chart Debug Selezione menu Triangolo Pseudocodifica Flow-chart Debug Reciproco Pseudocodifica Flow-chart Debug Mese (falso) Pseudocodifica Flow-chart Debug Ciclo Mese (vero) Pseudocodifica Flow-chart Debug Spesa Pseudocodifica Flow-chart Debug Mappa Debug Debug Debug Dal problema al programma