Algoritmo Ordinamento di 3 Numeri Sviluppiamo il problema con la tecnica Top-down Ordina 3 numeri interi: 0011 0010 1010 1101 0001 0100 1011a b c 1 2 4 Se a > b Se a > c Se b > c scambia a con b scambia a con c scambia b con c Trovare una subroutine generale per risolvere il problema scambia RAM a 5 b 3 c 1 comodo Ordina 3 numeri interi: 0011 0010 1010 1101 0001 0100 1011a b c 1 2 4 Se a > b Se a > c Se b > c scambia a con b scambia a con c scambia b con c Trovare una subroutine generale per risolvere il problema scambia Private Sub scambia (X,Y AS Integer) Dim Comodo AS Integer if X > Y then Comodo = X X=Y Y = Comodo End if End Sub 0011 0010 1010 1101 0001 0100 1011 I parametri sono oggetti che la routine chiamante trasmette alla routine chiamata e su cui essa deve operare. In questo modo le routine generali sono viste come “scatole chiuse” di cui si conosce solo la funzione svolta con cui si può comunicare solo attraverso i parametri. 1 2 4 Scambia è una routine generale, non è legata a nessun controllo presente nel form, ma viene attivata solo se richiamata all’interno del codice. X e Y sono detti parametri formali della subroutine rendono il sottoprogramma(cioè la subroutine) indipendente dalla routine chiamante; sono variabili di input/output del sottoprogramma Private Sub scambia (X,Y AS Integer) Private Sub cmdscambia_Click() Dim Comodo AS Integer a = VAL(txtPrimoValore.text) if X > Y then b = VAL(txtSecondoValore.Text) Comodo = X c = VAL(txtTerzoValore.Text) X=Y scambia a,b Y = Comodo scambia b,c End if End Sub scambia a,c 0011 0010 1010 1101 0001 0100 1011 Questa istruzione scambia scritta nella routine d’evento richiama la generale passando ad essa i valori contenuti nelle variabili a b 1 lblvariabile1.Caption = a 2 lblvariabile1.Caption = b 4 lblvariabile1.Caption = c End Sub I valori di a e b sono detti parametri attuali . Questi valori vengono accolti dalla routine generale per mezzo dei parametri formali X e Y ed elaborati Private Sub scambia (X,Y AS Integer) Private Sub cmdscambia_Click() Dim Comodo AS Integer a = VAL(txtPrimoValore.text) if X > Y then b = VAL(txtSecondoValore.Text) Comodo = X c = VAL(txtTerzoValore.Text) X=Y scambia a,b Y = Comodo scambia a,c End if scambia b,c End Sub 1 2 lblvariabile1.Caption = a 0011 0010 1010 1101 0001 0100 1011 a X b YX 5 3 c Y comodo lblvariabile1.Caption = b 1 End Sub 3 5 1 3 3 4 lblvariabile1.Caption = c 5 Private Sub scambia (X,Y AS Integer) Private Sub cmdscambia_Click() Dim Comodo AS Integer a = VAL(txtPrimoValore.text) if X > Y then b = VAL(txtSecondoValore.Text) Comodo = X c = VAL(txtTerzoValore.Text) X=Y scambia a,b Y = Comodo scambia a,c End if scambia b,c End Sub 0011 0010 1010 1101 0001 0100 1011 a b 5 3 c comodo 2 lblvariabile1.Caption = b 1 5 1 3 4 lblvariabile1.Caption = c End Sub 3 1 lblvariabile1.Caption = a 5 3 3 5 5