Programmare in Visual Basic Istruzione SE Contatori Ciclo di ripetizione.

Post on 02-May-2015

278 views 5 download

Transcript of Programmare in Visual Basic Istruzione SE Contatori Ciclo di ripetizione.

Programmare in Visual Basic

• Istruzione SE

• Contatori

• Ciclo di ripetizione

Testo del problema

Per ciascuno degli N prodotti acquistati da un cliente in un negozio sono noti: il prezzo unitario e la categoria merceologica (due tipi di categorie, supponiamo A e B).

Determinare (cioè calcolare):- Il numero di prodotti di categoria A- Il numero di prodotti di categoria B- L’importo totale dovuto dal cliente prima dello

sconto- L’importo totale scontato sapendo che lo sconto

è del 3% sul totale.

Facciamo un esempioimmaginiamo…

Un negozio

Una cassa

Il nostro carrello

Noi che dobbiamo fare il programma, dove stiamo?

Noi ci dobbiamo immaginare di essere dentro la cassa!

E che ci facciamo li dentro?

Dobbiamo fare lo scontrino!

• E per farlo dobbiamo vedere tutti i prodotti, controllare di quale categoria sono e il loro prezzo

Ma attenzione!C’è solo una piccola differenza.

.Rispetto ad una cassa

vera noi abbiamo bisogno di sapere prima quanti prodotti ci sono

nel carrello

Quindi partiremo così:Quanti articoli ci

sono nel carrello?

Poi possiamo partire a fare il lavoro

per tante volte quanti sono gli articoli nel carrello

Dati in input

• NP = numero prodotti

• P = prezzo

• CM = categoria merceologica

Dati in Output

• ITOT: Importo totale

• CONTB: Numero prodotti di categoria A

• CONTA: Numero prodotti di categoria B

• ISCONT: Importo scontato

Dunque…abbiamo risposto a quello che chiedeva il

testo del problema?

Per ciascuna domanda abbiamo una risposta!

• Per ciascuno degli N prodotti acquistati da un cliente in un negozio sono noti: il prezzo unitario e la categoria merceologica (due tipi di categorie, supponiamo A e B).

Determinare (cioè calcolare):• Il numero di prodotti di categoria A (CONTA)• Il numero di prodotti di categoria B (CONTB)• L’importo totale dovuto dal cliente prima dello

sconto (ITOT)• L’importo totale scontato sapendo che lo sconto

è del 3% sul totale (ISCONT).

Dati elaborazione

• Cont: numero totale di prodotti acquistati

Inizio

CONT=0CONTA=0CONTB=0

ITOT=0

NP i

vA

Quanti articoli ci sono nel carrello?

NP!

v

F

F

P;CM

Cont=cont+1

CM=“A” CONTA=CONTA+1CONTB=CONTB+1

ITOT=ITOT+P

CONT=NP

Questo è il ciclo. Cioè le istruzioni ripetute NP volte.

i

ISCONT=ITOT-(ITOT*3/100)

ITOT,ISCONT,CONTA,CONTB

o

A

FINE

ISCONT=ITOT-(ITOT*3/100)

ITOT,ISCONT,CONTA,CONTB

o

A

FINE

Anche questa è una elaborazione.

Però è fuori dal ciclo. Infatti viene svolta dopo che sono passati tutti i

prodotti dalla cassa.

Calcolo dello sconto!

Finalmente esce lo scontrino con - Importo totale

-Importo scontato- Quanti prodotti di

tipo A-E quanti di tipo B

E in Visual Basic, come si traduce?Cominciamo dall’inizio. Le

prime operazioni di input.

Inizio

NP i

TextBox

Nome: txtNP

Command

Nome:

cmdPassaAllaCassa

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 inputDim Np As IntegerDim P As DoubleDim CM As String

' Dati di elaborazioneDim Cont As Integer

' Dati di OutPutDim ContA As IntegerDim ContB As IntegerDim ITot As DoubleDim Iscont As Double

Il codice da scrivere deve essere eseguito alla pressione del

pulsante cmdPassaAllaCassa

Option Explicit' Dati di inputDim Np As IntegerDim P As DoubleDim CM As String

' Dati di elaborazioneDim Cont As Integer

' Dati di OutPutDim ContA As IntegerDim ContB As IntegerDim ITot As DoubleDim Iscont As Double

Private Sub cmdPassaAllaCassa_Click()

End Sub

Leggendo il diagramma a

blocchi, cominceremo a

scrivere qui!

NP i

Option Explicit' Dati di inputDim Np As IntegerDim P As DoubleDim CM As String

' Dati di elaborazioneDim Cont As Integer

' Dati di OutPutDim ContA As IntegerDim ContB As IntegerDim ITot As DoubleDim Iscont As Double

Private Sub cmdPassaAllaCassa_Click()

NP = txtNP.text

End Sub

ElaborazionePrivate Sub cmdPassaAllaCassa_Click()NP = txtNP.text

End Sub

CONT=0CONTA=0CONTB=0

ITOT=0

‘ Azzeramento variabili

Cont=0

ContA = 0

ContB = 0

Itot=0

Cominciamo a tradurre le istruzioni

v

F

F

P;CM

Cont=cont+1

CM=“A” CONTA=CONTA+1CONTB=CONTB+1

ITOT=ITOT+P

CONT=NP

Questo è il ciclo. Cioè le istruzioni ripetute NP volte.

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

ElaborazionePrivate 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

Quindi, si scrive dove inizia e dove finisce il ciclo…

v

F

F

P;CM

Cont=cont+1

CM=“A” CONTA=CONTA+1CONTB=CONTB+1

ITOT=ITOT+P

CONT=NP

Questo è il ciclo. Cioè le istruzioni ripetute NP volte.

REPEAT

LOOP UNTIL CONT=NP

A questo punto si passa alle istruzioni del CICLO

v

F

F

P;CM

Cont=cont+1

CM=“A” CONTA=CONTA+1CONTB=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)

‘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.

‘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 assegnazi

one.

‘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.

vF

Scrivo tutta la se, compreso IF, THEN, ELSE e l’END IF, poi

dentro metto le istruzioni

‘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

FCM=“A”

CONTA=CONTA+1CONTB=CONTB+1

v

Le istruzioni della struttura condizionale (il se) le porto al posto giusto. In questo caso sono due assegnazioni

Stiamo conteggiando i

prodotti per categoria

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

DOVE SIAMO?

v

F

F

P;CM

Cont=cont+1

CM=“A” CONTA=CONTA+1CONTB=CONTB+1

ITOT=ITOT+P

CONT=NP

QUI!!!

Manca, poco…

ISCONT=ITOT-(ITOT*3/100)

ITOT,ISCONT,CONTA,CONTB

o

A

FINE

Il calcolo dell’importo scontato

L’Output dei risultati

ISCONT=ITOT-(ITOT*3/100)

ITOT,ISCONT,CONTA,CONTB

o

A

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 scontatoISCONT=ITOT-(ITOT*3/100)

‘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 totaleITOT=ITOT+P

Loop Until CONT = NP

‘ Calcolo importo scontatoISCONT=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)

ISCONT=ITOT-(ITOT*3/100)

ITOT,ISCONT,CONTA,CONTB

o

A

FINE

Che aspettate a provare il programma?

Approfondimenti

FCM=“A”

CONTA=CONTA+1

vChe succede se ho una struttura

condizionale solo con il

vero?Come si traduce in VB?

IF CM=“A” THEN

CONTA = CONTA+1

END IF