Dal problema al programma Rastelli Nicolò Molteni Danilo Indice Sequenza Selezione Ciclo o iterazione Mappa Dal problema al programma 2 Sequenza Calcola la media di 3 numeri Pseudocodifica Debug Cerchio (area,circonferenza) Pseudocodifica Flow-chart Flow-chart Debug Rettangolo (area,perimetro) Pseudocodifica Flow-chart Dal problema al programma Debug 3 Selezione Trova il massimo di 3 numeri Pseudocodifica Debug Definisci il triangolo Pseudocodifica Flow-chart Flow-chart Debug Flow-chart Debug Reciproco Pseudocodifica Dal problema al programma 4 Ciclo o iterazione Mese Pseudocodifica Debug Flow-chart Debug Flow-chart Debug 2 esercizio Pseudocodifica Flow-chart 3 esercizio Pseudocodifica Dal problema al programma 5 Pseudocodifica: Calcola la media di 3 numeri Algoritmo media Private Sub calcola_Click() Variabili 'VARIABILI A, B, C numerica, intera, input Dim numero1, numero2, numero3 As Single M numerica, intera, input Dim media As Single Inizio 'ACQUISIZIONE DEI VALORI DELLE CELLE Scrivi(“Inserisci tre numeri interi”); numero1 = Cells(1, 2) numero2 = Cells(2, 2) Leggi(A,B,C); numero3 = Cells(3, 2) M = (A+B+C) /3 'CALCOLA LA MEDIA Scrivi(“Media =“, M); media = (numero1 + numero2 + numero3) / fine 3 'STAMPO IL RISULTATO NELLA CELLA b4: MEDIA Range("b4") = media End Sub Dal problema al programma 6 Flow-chart: Calcola la media di 3 numeri inizio A,B,C M=(A+B+C)/3 M fine Dal problema al programma 7 Debug: Calcola la media di 3 numeri Debug Algoritmo media Scrivi(“Inserisci 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 Dal problema al programma 8 Pseudocodifica: Cerchio (area, circonferenza) Algoritmo media Variabili Raggio input Circonferenza output Area output Costante Pigreco=3,14 numero reale, numero reale, numero reale, numero reale Inizio Scrivi(“inserisci raggio”); Leggi(raggio); Area = Pigreco * Raggio^2; Circonferenza = 2*pigreco*R; Scrivi (“area”,C); Scrivi (“circonferenza” , C); Fine Private Sub calcolaarea_Click() 'CONST pigreco = 3.14 'VARIABILI Dim raggio, circonferenza, area As Single 'AQUISIZIONE DEI VALORI DALLE CELLE raggio = Range("b1") 'CALCOLO IL VALORE DELL'AREA area = (raggio * raggio * pigreco) 'CALCOLO IL VALORE DELLA CIRCONFERENZ circonferenza = (raggio * 2 * pigreco) 'STAMPO NELLA CELLA B3 IL RISULTATO: AREA Range("b3") = area 'STAMPO NELLA CELLA B3 IL RISULTATO: CIRCONFERENZA Range("b2") = circonferenza End Sub Flow-chart: Cerchio (area, circonferenza) inizio R A=pigreco*r^2 C=2*pigreco*r A,C fine Dal problema al programma Debug: Cerchio (area, circonferenza) 1 2 3 4 5 6 Inserisci raggio R 5 A 3,14*5^2 C 2*3,14*5 Area = 78,5 Circonferenza = 31,4 Dal problema al programma Pseudocodifica: Rettangolo (area, perimetro) Algoritmo rettangolo B,H numerica, reale,input A,P numerica, reale, output Inizio scrivi (“inserisci base rettangolo”); leggi (b,h) A = (B*H); P = 2*(B+H); scrivi (“area =” A); scrivi (“perimetro =” P); Fine Private Sub calcola_Click() 'VARIABILI Dim base, altezza As Single Dim area, perimetro As Single 'AQUISIZIONE DEI VALORI DELLE CELLE base = Range("b2") altezza = Range("b3") 'CALCOLO L'AREA area = (base * altezza) 'STAMPO NELLA CELLA B5 IL RISULTATO: AREA Range("b5") = area 'CALCOLO IL PERIMETRO perimetro = (base + altezza) * 2 'STAMPO NELLA CELLA B4 IL RISULTATO: PERIMETRO Range("b4") = perimetro End Sub Dal problema al programma Flow-chart: Rettangolo (area, perimetro) inizio B,H A= B*H P= 2+(B*H) A,P fine Dal problema al programma Debug: Rettangolo (area, perimetro) 1 2 3 4 5 6 inserisci base,altezza B5,H2 A5*2 P2*(5+2) area=10 perimetro=14 Pseudocodifica: Trova il massimo di 3 numeri Algoritmo 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 Private Sub massimominimo_Click() '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 massimo = primonumero If (secondonumero > massimo) Then massimo = secondonumero End If If (terzonumero > massimo) Then massimo = terzonumero End If 'STAMPO IL RISULTATO NELLA CELLA b5: massimo Range("b5") = massimo End Sub Dal problema al programma 15 Flow-chart: trova il massimo tra 3 numeri inizio A,B,C Max=A B>Max C>Max Max=B Max=C Max fine Dal problema al programma 16 Debug: trova il massimo tra 3 numeri interi 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 Inserisci tre numeri interi A4B6C8 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 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 A4B4C4 Max = 4 4>4? 4>4? Il massimo è = 4 Dal problema al programma 17 Pseudocodifica: Definisci il triangolo Algoritmo Triangolo Variabili Private Sub CommandButton1_Click() A, B, C numerica, intera, input 'variabili Inizio Scrivi (“Inserisci i tre lati del triangolo”); Dim lato1, lato2, lato3 As Single Leggi (A, B, C); 'acquisisci valori dalle celle Se (A<>B) AND (B<>C) AND (A<>C) allora lato1 = Range("b1") Scrivi (“Scaleno”); lato2 = Range("b2") Fine se lato3 = Range("b3") Se (A=B)OR (B=C) OR (A=C) 'definisci triangolo Scrivi (“Isoscele”); If (lato1 <> lato2) And (lato2 <> lato3) And Fine se (lato1 <> lato3) Then Se (A=B) AND (B=C) AND (A=C) allora Range("a5") = "scaleno" Scrivi (“Equilatero”); End If Fine se If (lato1 = lato2) Or (lato2 = lato3) Or (lato1 = Fine Dato in input 3 lati di un triangolo, dire in output se il triangolo è: Scaleno Isoscele Equilatero lato3) Then Range("a5") = "isoscele" End If If (lato1 = lato2) And (lato2 = lato3) Then Range("a5") = "equilatero" End If End Sub Dal problema al programma 18 Flow-chart: Definisci il triangolo Inizio A, B, C No No No A <> B AND B <> C AND A <> C A=B A=B OR B=C OR B=C OR A=C A=C OR A=B AND B=C AND A=C Dal problema al programma Sì Scaleno Scaleno Sì Isoscele Sì Equilatero Fine 19 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 Debug 1 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 Debug 2 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 Inserisci tre lati del triangolo A4B4C4 4<> 4 AND 4 <> 4 AND 4 <> 4 ? F 4 = 4 OR 4 = 4 OR 4 = 4 ? V Isolscele 4 = 4 AND 4 = 4 AND 4 = 4 ? F Dal problema al programma 20 Pseudocodifica: Reciproco Algoritmo reciproco Variabili A numerica, intera, I Inizio scrivi (“inserisci un numero”); leggi (A); se ( A <> 0) allora scrivi (“1/”A); se no scrivi(“errore”); fine Private Sub CommandButton1_Click() '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 End Sub Dal problema al programma 21 Flow-chart: Reciproco inizio A no (A<>0) errore si 1/A fine Dal problema al programma 22 Debug: Reciproco Algoritmo reciproco scrivi (“inserisci unnumero”); leggi (A); se ( A <> 0) allora scrivi (“1/”A); altrimenti scrivi(“errore”); fine se Dal problema al programma Debug 1 Inserisci un numero A4 (4 <> 0) ? (V) ¼ Debug 2 Inserisci un numero A0 (0 <>0) ? (F) errore 23 Pseudocodifica: Mese 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(“errore reinserici”) Fine se Finché (M>12)OR(M<1) Fine Finché (M>0)AND(M<13) Fine Private Sub CommandButton1_Click() '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 End Sub Flow-chart: Mese Inizio M no si M>0 AND M< 13 Corretto Errato M>0 AND M< 13 Fine Debug: Mese RIPETI Scrivi(“Inserisci mese”); Leggi(M); Se (M>0)AND(M<13) allora scrivi(“mese inserito corretto”); altrimenti scrivi(“errore reinserici”) Fine se Finché (M>0)AND(M<13) Inserisci mese M14 14>0 AND 14<13 ? (F) errore reinserici 14>0 AND 14<13 ? (F) Inserisci mese M1 1<0 AND 1<13 ? (V) Mese inserito corretto 1>0 AND 1<13 ? (V) Codifica: Spesa Private Sub CommandButton1_Click() '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 End Sub Mappa sequenza Indice 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 pseudocodifica Flow-chart Debug Es 2 pseudocodifica Flow-chart Debug Es 3 pseudocodifica Flow-chart Debug Dal problema al programma 28