PROGRAMACIÓ D'APLICACIONS EDUCATIVES AMB VISUAL BASICMÒDUL 5ENRERA
PRÀCTICA 1 2 3 4 (pràctica optativa)
 
Executar el programa m5p1.exe per conèixer el seu comportament.

Veure el llistat del codi del programa, m5p1.

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


Preguntes i respostes utilitzant una matriu

Aquesta activitat consisteix a demanar la contestació a preguntes que es presenten en un formulari i en presentar un missatge en funció de la resposta. Està dividida en dues parts en funció de la manera en la qual s'emmagatzemen les dades:

Primera part: les dades s'emmagatzemen en una matriu (array de dades). És aquesta pràctica.

Segona part: les dades s'emmagatzemen en un fitxer. És la pràctica següent.


Part primera: utilitzant una matriu de dades per emmagatzemar les preguntes i les respostes

El formulari d'aquesta activitat inclou cinc controls: tres caixes de text (una per mostrar la pregunta, una per escriure la resposta i una altra per mostrar un missatge en funció de la resposta donada), una etiqueta i un botó de comandament per realitzar la pregunta.

El formulari que creareu serà semblant al presentat aquí:




Creeu un directori nou: C:\VBCurs\VBActivi\m5\p1 i un nou projecte, en aquest directori, que anomenareu m5p1. En ell, desareu tots els fitxers d'aquesta activitat.


Fase de disseny de la interfície d’usuari

Els controls que intervenen i les seves propietats són els següents:


Objecte

Propietat

Valor

Formulari

(Nombre)

frmPreguntesRespostes

 

Caption

Preguntes i respostes

Botó Nova Pregunta

(Nombre)

cmdNovaPregunta

 

Caption

&Nova pregunta

Etiqueta

(Nombre)

lblResposta

 

Caption

Escriviu la resposta:

Caixa de text Pregunta

(Nombre)

txtPregunta

 

Text

 

ForeColor

Vermell

Caixa de text Resposta

(Nombre)

txtResposta

 

Text

 

Caixa de text Avaluació

(Nombre)

txtAvaluacióResposta

 

Multiline

True

 

Alignment

2 - Center

 

ForeColor

Blau

 

Text

 


Fase de programació de respostes a events

Cal declarar les variables i procediments que inicialitzen els valors de la matriu que conté les preguntes i les respostes:

Declaracions generals d'àmbit el formulari principal:

Declaracions de variables:
    Dim matriuPreguntes(3, 2) As String
    Dim m As Integer

Procediments:
    Sub IniciaMatriuPreguntes ()
      matriuPreguntes(1, 1) = "Quin és el nom de la ciutat on hi ha una torre inclinada molt famosa?"
      matriuPreguntes(1, 2) = "Pisa"
      matriuPreguntes(2, 1) = "Quants dies té un any de traspàs?"
      matriuPreguntes(2, 2) = "366"
      matriuPreguntes(3, 1) = "Quin mes se celebra Sant Jordi?"
      matriuPreguntes(3, 2) = "Abril"
    End Sub

Mètodes associats a l'event Load

Per al formulari principal:
    Sub Form_Load ()
      IniciaMatriuPreguntes	'Aquesta és la crida al procediment definit anteriorment
      txtPregunta.Visible = False
      lblResposta.Visible = False
      txtResposta.Visible = False
      txtAvaluacióResposta.Visible = False
    End Sub

En obrir el formulari, es donen valors als components de la matriu i s'amaguen tots els botons llevat del botó de comandament:

Observeu la crida al procediment IniciaMatriuPreguntes declarat d'àmbit general a tot el formulari principal.


Mètodes associats a l'event Click

Per al botó cmdNovaPregunta:
    Sub cmdNovaPregunta _Click ()
      txtAvaluacióResposta.Visible = False
      Randomize
      m = Int(3 * Rnd + 1)
      txtPregunta.Text = matriuPreguntes(m, 1)
      lblResposta.Visible = True
      txtPregunta.Visible = True
      txtResposta.Visible = True
      txtResposta.SetFocus
      txtResposta.Text = ""
    End Sub

S'escull una pregunta a l'atzar i es presenta en la caixa de text txtPregunta. Els altres controls es fan visibles.


Podeu observar que l'expressió m = Int(3 * Rnd + 1) serveix per establir, de manera aleatòria, la pregunta escollida ja que el valor d'aquesta expressió adopta un valor entre 1 i 3 (ambdós inclosos). Per altra banda, la instrucció txtResposta.SetFocus té la finalitat de situar el cursor a la caixa de text i fer que aquesta tingui el focus, és a dir, que estigui activada.

Tema: SetFocus Subtema: SetFocus Method


Mètodes associats a l'event KeyDown

Per a la caixa de text txtResposta:
    Sub txtResposta_KeyDown (Keycode As Integer, Shift As Integer)
      If Keycode = 13 Then
        txtAvaluacióResposta.Visible = True
        If (matriuPreguntes(m, 2) = txtResposta.Text) Then	'Avaluació de la resposta 
          txtAvaluacióResposta.Text = "Molt bé"
        Else
          txtAvaluacióResposta.Text = "La resposta correcta és: " & matriuPreguntes(m, 2)
        End If
      End If
    End Sub

En prémer la tecla RETORN (event KeyDown), i estant situat el cursor a la caixa de text txtResposta, la resposta és avaluada i apareix el missatge adient a la caixa de text txtAvaluacióResposta.



Exercicis

Per enviar al professor tutor. (Directori C:\VBCurs\VBExerci\m5\p1 )

E1. Dissenyeu un projecte de preguntes i respostes per a la vostra matèria semblant al de la pràctica. La matriu contindrà 4 camps: la pregunta, dos camps de respostes i un camp addicional per especificar quina de les dues respostes és la bona. El programa presentarà en pantalla la pregunta i les dues respostes. L'alumne haurà d'escollir una de les dues i el programa donarà un missatge en funció de la resposta escollida. No cal que hi poseu gaire preguntes.

La finestra principal del programa ha de quedar més o menys així:





Cal enviar els següents fitxers:
    Fitxer projecte m5p1e1.vbp
    Fitxer formulari m5p1e1.frm
    Fitxer executable m5p1e1.exe
Nota: Aquest tipus d'exercicis de pregunta i resposta d'elecció múltiple normalment no es fan així, en lloc d'escriure resposta 1 o 2, es fa mitjançant els botons d'opció .