PROGRAMACIÓ D'APLICACIONS EDUCATIVES AMB VISUAL BASICMÒDUL 6ENRERA
PRÀCTICA 1 2 (pràctica optativa) 3 (pràctica optativa) 4 5 6 8 8
 

Pràctica optativa


Executar el programa m6p3.exe per conèixer el seu comportament.

Veure el llistat del codi del programa, m6p3.

Executar Visual Basic per editar el projecte (acabat): m6p3.vbp.


Un programa que necessita la instrucció Pset

Fareu un programa que tracti un autòmat cel·lular. En un autòmat cel·lular d'una dimensió teniu un vector de dades que emmagatzema els valors associats a un estat determinat. Si canvia l'estat, el valor dels elements del vector de dades que el representa canvia segons una regla predeterminada, de manera que l'estat d'un element depèn de l'estat previ dels que té al seu voltant. Si canvia l'estat de l'autòmat novament, cal aplicar la regla una altra vegada i així successivament.

Per entendre aquest concepte observeu la figura següent en què l'autòmat té un estat inicial que es representa per un vector que conté 8 elements (0,0,0,1,1,0,0,0) i que es va modificant seguint una regla: cada element del vector rep, en el pas següent, la suma dels dos elements que té contigus més el seu valor. Si la suma és més gran que 3 rep el valor 0.

 

Autòmat

 

 

 

 

 

 

 

Estat 0

0

0

0

1

1

0

0

0

Estat 1

0

0

1

2

2

1

0

0

Estat 2

0

1

3

0

0

3

1

0

Estat 3

1

0

0

0

3

0

0

1

Estat 4

1

1

3

0

0

3

1

1

Estat 5

2

2

0

3

3

0

2

2



En aquest exemple, l'estat 1 rep els valors:

Primera columna: valor 0 i suma dels valors contigus (cap+0) 0

Segona columna: valor 0 i suma dels valors contigus (0+0) 0

Tercera columna: valor 0 i suma dels valors contigus (0+1) 1

Quarta columna: valor 1 i suma dels valors contigus (0+1) 2

Cinquena columna: valor 1 i suma dels valors contigus (1+0) 2

Sisena columna: valor 0 i suma dels valors contigus (1+0) 1

Setena columna: valor 0 i suma dels valors contigus (0+0) 0

Vuitena columna: valor 0 i suma dels valors contigus (0+0) 0


Si feu la representació dels estats amb punts de color de manera que el punt de la pantalla tingui el número de color corresponent al seu estat podeu obtenir una figura com la següent:


El programa

En aquest projecte dibuixareu directament sobre l'objecte formulari quan feu Click a sobre del formulari. El programa demana el valor que ha d'assolir un element per tornar a tenir el valor 0. Cada estat de l'autòmat es representarà per un vector de 400 elements.

Aquest projecte el desareu a C:\VBCurs\VBActivi\m6\p3 amb el nom m6p3.


Fase de disseny de la interfície d’usuari

Heu de crear un formulari que respongui a l'event Click. Assigneu-li les propietats que considereu oportunes. La propietat ScaleMode ha de tenir el valor 3:Pixel.


Fase de programació de respostes a events

Procediments de caràcter general

Procediment que dibuixa la figura associada a l'autòmat i d'àmbit el formulari:
    Sub Dibuix1 (N As Integer)
      Dim s As Integer, i As Integer
      Dim Fila, Columna As Integer
      Redim FilaAuxiliar(0 To 400) As Integer
      Redim Autòmat(0 To 400) As Integer
    
      Cls
      'Inicialització de l'estat de l'autòmat  (Estat 0)
      For Columna = 0 To 400
        Autòmat(Columna) = 0
      Next Columna
      'inicialitza les dues columnes centrals a 1
      Autòmat(199) = 1
      Autòmat(200) = 1
      'Dibuix de  la primera fila
      Fila = 1
      For Columna = 0 To 400
        PSet (Columna, Fila), QBColor(Autòmat(Columna))
      Next Columna
      For Fila = 2 To 400
        'Càlcul de la fila següent i es posa a FilaAuxiliar
        For Columna = 1 To 399
          s = 0
          For i = Columna - 1 To Columna + 1
            s = s + Autòmat(i)
          Next i
          FilaAuxiliar(Columna) = s Mod N
        Next Columna
        'Pas de la FilaAuxiliar a l'autòmat i dibuix de l'autòmat
        For Columna = 0 To 400
          Autòmat(Columna) = FilaAuxiliar(Columna) 
          PSet (Columna, Fila), QBColor(Autòmat(Columna))
        Next Columna
      Next Fila
    End Sub

Tema: Pset Subtema: Pset Method


Mètodes associat a l'event Click

Per al formulari principal:
    Sub Form_Click ()
      Dim a As Integer
    
      a = Val(InputBox("Escriviu un número entre 2 i 16"))
      Dibuix1 (a)
    End Sub

Tema: InputBox Subtema: InputBox, InputBox$ Functions

Aquest procediment demana la introducció d'un número comprés entre 2 i 16 (aquests valors són els que especifiquen els colors de dibuix) per tal d'inicialitzar el dibuix de l'autòmat, passant com a paràmetre aquest número.


Exercicis

Investigueu vosaltres mateixos:

1. Feu variar l'estat inicial. Poseu a 1 els elements 0, 100, 200, 300 i 400.

2. Poseu a 1 tots els elements que siguin múltiples de 5 (For i=0 to 400 step 5)

3. Feu una assignació aleatòria mitjançant la funció Rnd de 20 elements.

4. Canvieu la regla per la qual els elements es desenvolupen. Per exemple, que un element sigui la suma dels dos elements que té a l'esquerra i del que té a la dreta.