PROGRAMACIÓ D'APLICACIONS EDUCATIVES AMB VISUAL BASICMÒDUL 2ENRERA
PRÀCTICA 1 2 3 4
 
Executar el programa m2p1.exe per conèixer el seu comportament.

Veure el llistat del codi del programa, m2p1.

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


Taules d'operacions aritmètiques: suma i multiplicació

En aquesta activitat heu de fer un programa en què, introduït un número i escollit el tipus d'operació matemàtica, es visualitzi la taula de sumar o multiplicar corresponent. Per exemple, si el número escollit és el 2, les taules seran:

2+1=3
2+2=4
...
2+10=12


2*1=2
2*2=4
...
2*10=20

Apareixen dos objectes nous: dos botons d'opció que utilitzareu per escollir el tipus de taula (suma o multiplicació). En el codi de programa entren en joc les instruccions de selecció (if) i d'iteració (for). El formulari d'aquesta activitat serà semblant al següent:




Fase de disseny de la interfície d’usuari

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

Establiu les propietats dels objectes que hi apareixen en el formulari principal. Tingueu present algunes d'aquestes propietats:

Al costat de cada objecte de la taula següent hi ha un número entre parèntesis que correspon a l'objecte etiquetat amb el mateix número en vermell de la figura anterior.

Objecte

Propietat

Valor

Formulari (1)

Caption

Sumar o Multiplicar

Botó Calcular (2)

Caption

&Calcular

 

(Nombre)

cmdCalcular

Botó Fi (3)

Caption

&Fi

 

(Nombre)

cmdFi

Etiqueta (4)

Caption

Taula del

Caixa nº escollit (5)

(Nombre)

txtNúmeroTaula

 

Text

 

Caixa de la taula (6)

(Nombre)

txtTaula

 

Multiline

True

 

Enabled

False

 

ForeColor

Blau (&H00FF0000&)

 

Text

 

Frame opcions (7)

(Nombre)

fraOpcions

 

Caption

Què voleu fer?

Opció Sumar (8)

(Nombre)

opSumar

 

Caption

Sumar

 

Value

True

Opció Multiplicar (9)

(Nombre)

opMultiplicar

 

Caption

Multiplicar

 

Value

False



Per que els botons d'opció funcionin correctament cal que primer coloqueu el frame i després hi coloqueu els botons d'opció a dins.

Aquestes definicions impliquen:

Pel que fa a objectes, apareixen dos de nous: l'objecte botó d'opció i l'objecte frame.

Tema: Option Button Subtema: Option Button Control

Tema: Frame Subtema: Frame Control

L'objecte Botó d'opció té com a finalitat establir un valor per a la propietat Valor, d'entre dos possibles, de manera que en funció d'aquest valor se seleccioni el codi de programa a executar.

Així, el botó d'opció Sumar estarà seleccionat per defecte: la propietat Value té el valor True. Anàlogament, l'altre opció Multiplicar té el valor False perquè no està seleccionat inicialment. Per tant, en clicar el botó de comandament Calcular, es realitzarà per defecte, la suma.

Tema: Value Subtema: Value Property

Fixeu-vos també, en què el número que introduïu és una dada del tipus text, de manera semblant a com va passar a l'activitat 3. Caldrà que el codi de programa contempli aquest fet mitjançant les funcions o procediments, incorporats en Visual Basic, que serveixen per fer les transformacions entre tipus de dades escaients.

Finalment, la propietat Multiline associada a una caixa de text permet la visualització del text en diferents línies.


Fase de programació de respostes a events

Podeu comprovar que el títol d'aquest apartat ha canviat respecte a d'altres activitats. El motiu és que en aquesta activitat heu de crear el codi associat als events i als objectes i, a més, un procediment anomenat EmplenarTaula() que no està lligat a cap event però que serà utilitzat en altres procediments d'event. Aquest procediment està definit en l'àmbit del formulari principal i és l'encarregat d'emplenar la caixa de text txtTaula a partir del valor que hi ha a l'altra caixa de text: txtNúmeroTaula. El codi l'heu d'incorporar a la finestra "de codi" mostrada a continuació:



Per escriure aquest procediment poseu-vos en la finestra d'edició de codi i sota de option explicit (o en qualsevol lloc de la finestra d'edició sempre i quan no sigui a l'interior d'un altre mètode o procediment) escriviu:

    Sub EmplenarTaula() Dim i As Integer Dim NúmeroTaula As Integer Dim Taula As String NúmeroTaula = Val(txtNúmeroTaula) If opSumar Then For i = 1 To 10 Taula = Taula + Str$(NúmeroTaula) + " + " + Str$(i) + " = " Taula = Taula + Str$(NúmeroTaula + i) + Chr$(13) + Chr$(10) Next i Else For i = 1 To 10 Taula = Taula + Str$(NúmeroTaula) + " * " + Str$(i) + " = " Taula = Taula + Str$(NúmeroTaula * i) + Chr$(13) + Chr$(10) Next i End If txtTaula.Text = Taula End Sub

Pot semblar que aquest codi :
          Taula = Taula + Str$(NúmeroTaula) + " + " + Str$(i) + " = "
          Taula = Taula + Str$(NúmeroTaula + i) + Chr$(13) + Chr$(10)
    
és una mica extrany pel fet de repetir Taula = Taula + ..., es fa així perquè la línia no sigui tan llarga.
Punts a tenir en compte en aquest fragment de codi són:

A la variable numèrica NúmeroTaula se li assigna el número que està en format text a la caixa de text txtNúmeroTaula fent servir la funció Val:

    NúmeroTaula = Val(txtNúmeroTaula)

Tema: Val Subtema: Val Function

L'operació que es visualitza serà la suma o la multiplicació en funció del bloc selectiu:

      If opSumar Then 'Instruccions per a la suma Else 'Instruccions per a la multiplicació End If

Segons això, per seleccionar les instruccions que s'han d'executar en funció d'una condició, heu de fer servir la instrucció If...

Tema: If..Then..Else Subtema: If..Then..Else Statement

Per fer la taula de la suma o de la multiplicació, ja que heu de repetir 10 vegades una sèrie d'instruccions, heu d'utilitzar la instrucció de repetició For....Next. Aquesta instrucció s'utilitza quan el nombre d'instruccions és fix i depenent d'una variable comptador. En el codi anterior aquesta variable és i. En aquest programa, les instruccions que estan dins de la iteració For..Next (10 vegades) assignen a la variable Taula els valors que es visualitzaran (suma o multiplicació) i en línies diferents. El canvi de línia s'efectua gràcies a la inclusió dels caràcters Chr$(13) + Chr$(10): RETORN i CANVI DE LÍNIA.

Tema: For..Next Subtema: For..Next Statement

Tema: Chr Subtema: Ch, Chr$ Functions

Les dues línies que comencen per "Taula=" són les causants de que a la caixa Taula aparegui el resultat de forma semblant a:
2+1=3
2+2=4
etc.

o

2*1=2
2*2=4
etc.

Finalment, es modifica el text de la caixa de text: txtTaula.Text = Taula

Procediments associats a l'event Click

Botó Calcular
    Sub cmdCalcular_Click () EmplenarTaula End Sub

Botó Fi
    Sub cmdFi_Click () End End Sub

Procediments associats a l'event KeyDown

Aquest event es produeix quan es prem una tecla. Observeu que el procediment d'event té dos paràmetres, KeyCode i Shift, que agafen els seus valors en funció de les tecles premudes. El paràmetre KeyCode és el número corresponent a la tecla premuda i el paràmetre Shift indica quin és l'estat de les tecles Alt, Shift i Ctrl.


Caixa de text Taula

    Sub txtNúmeroTaula_KeyDown (KeyCode As Integer, Shift As Integer) If KeyCode = 13 Then EmplenarTaula End Sub

Tema: KeyDown Subtema: KeyDown, KeyUp Events

En aquest procediment, cada vegada que es prem una o diverses tecles, els dos paràmetres tenen els valors numèrics en codi ANSI corresponents a les tecles premudes. Només en el cas que la tecla premuda sigui la tecla de RETORN, s'emplenarà la taula.

Tema: ANSI Subtema: ANSI Character Set



Exercicis

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

E1. Feu un programa que presenti la taula de multiplicar d'un número escollit, mitjançant 9 botons d'opció.

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





Cal enviar els següents fitxers:
    Fitxer projecte m2p1e1.vbp
    Fitxer formulari m2p1e1.frm
    Fitxer executable m2p1e1.exe

Pista: el procediment EmplenarTaula feu que porti arguments.

    Sub EmplenarTaula (NúmeroTaula As Integer)

Tema: Sub Subtema: Sub Statement


Un procediment pot portar paràmetres. Això vol dir que podeu cridar al procediment amb algun valor variable. Quan crideu aquest procediment haureu de fer-ho així: EmplenarTaula(2) o EmplenarTaula(7) o qualsevol altre número perquè aquest procediment calculi les diferents taules de multiplicar. Dins del procediment aquest valor l'utilitzareu fent servir la variable NúmeroTaula.