Esercizio di traduzione di diagramma a blocchi.
Argomenti
- Dichiarazione variabili
- Struttura condizionale istruzione SE
- Ciclo, istruzione Do LOOP
- Input e output
-
8. Ma attenzione! C’è solo una piccola differenza. . Rispetto ad una cassa vera noi abbiamo bisogno di sapere prima quanti prodotti ci sono nel carrello
10. Poi possiamo partire a fare il lavoro per tante volte quanti sono gli articoli nel carrello
11.
12.
13.
14.
15. Inizio v A Quanti articoli ci sono nel carrello? NP! i FINE CONT=0 CONTA=0 CONTB=0 ITOT=0 NP i v F F P;CM Cont=cont+1 CM=“A” CONTA=CONTA+1 CONTB=CONTB+1 ITOT=ITOT+P CONT=NP Questo è il ciclo. Cioè le istruzioni ripetute NP volte. ISCONT=ITOT-(ITOT*3/100) ITOT,ISCONT, CONTA,CONTB o A
16.
17. E in Visual Basic, come si traduce? Cominciamo dall’inizio. Le prime operazioni di input. Inizio TextBox Nome: txtNP Command Nome: cmdPassaAllaCassa NP i
18. Per adesso è facile. Ma il ciclo? Calma, calma. Adesso inizia il codice ma…. Un passo per volta! Prima dichiariamo le variabili! Option Explicit ' Dati di input Dim Np As Integer Dim P As Double Dim CM As String ' Dati di elaborazione Dim Cont As Integer ' Dati di OutPut Dim ContA As Integer Dim ContB As Integer Dim ITot As Double Dim Iscont As Double
19. Il codice da scrivere deve essere eseguito alla pressione del pulsante cmdPassaAllaCassa
20. Option Explicit ' Dati di input Dim Np As Integer Dim P As Double Dim CM As String ' Dati di elaborazione Dim Cont As Integer ' Dati di OutPut Dim ContA As Integer Dim ContB As Integer Dim ITot As Double Dim Iscont As Double Private Sub cmdPassaAllaCassa_Click() End Sub Leggendo il diagramma a blocchi, cominceremo a scrivere qui!
21. Option Explicit ' Dati di input Dim Np As Integer Dim P As Double Dim CM As String ' Dati di elaborazione Dim Cont As Integer ' Dati di OutPut Dim ContA As Integer Dim ContB As Integer Dim ITot As Double Dim Iscont As Double Private Sub cmdPassaAllaCassa_Click() NP = txtNP.text End Sub NP i
22. Elaborazione Private Sub cmdPassaAllaCassa_Click() NP = txtNP.text End Sub ‘ Azzeramento variabili Cont=0 ContA = 0 ContB = 0 Itot=0 CONT=0 CONTA=0 CONTB=0 ITOT=0
23. Cominciamo a tradurre le istruzioni La prima istruzione del CICLO non si vede ma c’è! L’ultima istruzione del ciclo è quella da dove parte la freccia che torna indietro per RIPETERE v F F P;CM Cont=cont+1 CM=“A” CONTA=CONTA+1 CONTB=CONTB+1 ITOT=ITOT+P CONT=NP Questo è il ciclo. Cioè le istruzioni ripetute NP volte.
24. Elaborazione Private Sub cmdPassaAllaCassa_Click() NP = txtNP.text End Sub ‘ Azzeramento variabili Cont=0 ContA = 0 ContB = 0 Itot=0 ‘ Inizio Ciclo Repeat Loop Until CONT = NP Infatti si scrivono le istruzioni che rappresentano l’INIZIO e la FINE del ciclo Tra la REPEAT e la LOOP metteremo le altre istruzioni
25. Quindi, si scrive dove inizia e dove finisce il ciclo… REPEAT LOOP UNTIL CONT=NP v F F P;CM Cont=cont+1 CM=“A” CONTA=CONTA+1 CONTB=CONTB+1 ITOT=ITOT+P CONT=NP Questo è il ciclo. Cioè le istruzioni ripetute NP volte.
26. A questo punto si passa alle istruzioni del CICLO v F F P;CM Cont=cont+1 CM=“A” CONTA=CONTA+1 CONTB=CONTB+1 ITOT=ITOT+P CONT=NP Questa è una istruzione di INPUT. Fino ad adesso abbiamo imparato a tradurla con i TextBox. Ma se siamo dentro un ciclo dobbiamo usare la InputBox, anzi due inputbox perché due sono le variabili ( P e CM )
27. ‘ Inizio Ciclo DO P = InputBox(“Dimmi il prezzo”) CM = InputBox(“Dimmi la categoria”) Loop Until CONT = NP P;CM Attenzione!!Un simbolo e due istruzioni.
28. ‘ Inizio Ciclo Do P = InputBox(“Dimmi il prezzo”) CM = InputBox(“Dimmi la categoria”) Cont = Cont + 1 Loop Until CONT = NP Cont=cont+1 Questa è facile! E’ una assegnazione .
29. ‘ Inizio Ciclo Do P = InputBox(“Dimmi il prezzo”) CM = InputBox(“Dimmi la categoria”) Cont = Cont + 1 IF CM=“A” THEN ELSE END IF Loop Until CONT = NP CM=“A” E quando trovo una struttura condizionale la traduco con la se. v F Scrivo tutta la se, compreso IF , THEN , ELSE e l’ END IF , poi dentro metto le istruzioni
30. ‘ Inizio Ciclo Do P = InputBox(“Dimmi il prezzo”) CM = InputBox(“Dimmi la categoria”) Cont = Cont + 1 IF CM=“A” THEN CONTA = CONTA+1 ELSE CONTB = CONTB+1 END IF Loop Until CONT = NP Le istruzioni della struttura condizionale (il se) le porto al posto giusto. In questo caso sono due assegnazioni Stiamo conteggiando i prodotti per categoria F CM=“A” CONTA=CONTA+1 CONTB=CONTB+1 v
31. ITOT=ITOT+P ‘ Inizio Ciclo Do P = InputBox(“Dimmi il prezzo”) CM = InputBox(“Dimmi la categoria”) Cont = Cont + 1 IF CM=“A” THEN CONTA = CONTA+1 ELSE CONTB = CONTB+1 END IF ITOT=ITOT+P Loop Until CONT = NP Qui invece, sommo l’importo totale
32. DOVE SIAMO? v F F P;CM Cont=cont+1 CM=“A” CONTA=CONTA+1 CONTB=CONTB+1 ITOT=ITOT+P CONT=NP QUI!!!
33. Manca, poco… FINE Il calcolo dell’importo scontato L’Output dei risultati ISCONT=ITOT-(ITOT*3/100) ITOT,ISCONT, CONTA,CONTB o A
34. FINE ‘ Inizio Ciclo Do P = InputBox(“Dimmi il prezzo”) CM = InputBox(“Dimmi la categoria”) Cont = Cont + 1 IF CM=“A” THEN CONTA = CONTA+1 ELSE CONTB = CONTB+1 END IF ‘ calcolo importo totale ITOT=ITOT+P Loop Until CONT = NP ‘ Calcolo importo scontato ISCONT=ITOT-(ITOT*3/100) ISCONT=ITOT-(ITOT*3/100) ITOT,ISCONT, CONTA,CONTB o A
35. ‘ Inizio Ciclo Do P = InputBox(“Dimmi il prezzo”) CM = InputBox(“Dimmi la categoria”) Cont = Cont + 1 IF CM=“A” THEN CONTA = CONTA+1 ELSE CONTB = CONTB+1 END IF ‘ calcolo importo totale ITOT=ITOT+P Loop Until CONT = NP ‘ Calcolo importo scontato ISCONT=ITOT-(ITOT*3/100) MsgBox “L’importo totale è “ & cstr(Itot) MsgBox “L’importo scontato è “ & cstr(Iscont) MsgBox “I prodotti di tipo A sono “ & cstr(ContA) MsgBox “I prodotti di tipo B sono “ & cstr(ContB) FINE ISCONT=ITOT-(ITOT*3/100) ITOT,ISCONT, CONTA,CONTB o A
37. Approfondimenti F CM=“A” CONTA=CONTA+1 v Che succede se ho una struttura condizionale solo con il vero? Come si traduce in VB? IF CM=“A” THEN CONTA = CONTA+1 END IF