Professional Documents
Culture Documents
http://msdn.microsoft.com/es-es/library/dd492172.aspx
Este artculo se tradujo de forma manual. Mueva el puntero sobre las frases del artculo para ver el texto original. Ms informacin.
Traduccin
Original
%enerar n&meros aleatorios mediante la clase Random. %enerate random numbers using t,e Random class. 'esencadenar eventos mediante un control +roponga una traduccin mejor ontrolar el flujo del programa mediante instrucciones if else. (eali)ar operaciones aritm#ticas bsicas.
uando termine! el programa se parecer al de la ilustracin siguiente. *uego "ue crear en este tutorial
1 de 3
http://msdn.microsoft.com/es-es/library/dd492172.aspx
Nota En este tutorial! se trata tanto /isual 0 como /isual 1asic! por lo "ue deber centrarse en la informacin especfica del lenguaje de programacin "ue use.
Temas relacionados
Ttulo +aso -: rear un pro2ecto 2 agregar eti"uetas al formulario +aso .: rear un problema de suma aleatoria
Descripcin omience por crear el pro2ecto! cambiar las propiedades 2 agregar controles Label. ree un problema de suma "ue genera n&meros aleatorios mediante la clase Random. $gregue un tempori)ador de cuenta atrs para poder limitar el tiempo de la prueba. $gregue un m#todo para comprobar si las respuestas son correctas.
2 de 3
http://msdn.microsoft.com/es-es/library/dd492172.aspx
+aso 8: $gregar controladores de eventos Enter para los controles 9umeric:p'o5n +aso ;: $gregar un problema de resta
$gregue un problema de resta "ue genere n&meros aleatorios. ompruebe "ue las respuestas son correctas 2 utilice el tempori)ador.
$gregue problemas de multiplicacin 2 divisin "ue generan n&meros aleatorios. ompruebe "ue las respuestas son correctas 2 utilice el tempori)ador.
Adiciones de comunidad
> .?-3 Microsoft. (eservados todos los derec,os.
3 de 3
http://msdn.microsoft.com/es-es/library/dd492178.aspx
Este artculo se tradujo de forma manual. Mueva el puntero sobre las frases del artculo para ver el texto original. Ms informacin.
Traduccin
Original
1 de 7
http://msdn.microsoft.com/es-es/library/dd492178.aspx
). !ambie la propiedad Auto"i#e a False para poder modificar personalmente las dimensiones del cuadro. +. !ambie la propiedad Border"tyle a Fixed"in-le para dibujar una lnea alrededor del cuadro. 0. Estable,ca la propiedad "i#e en *++. $+. .. 5rrastre la eti#ueta &acia la es#uina superior derec&a del formulario &asta #ue apare,can las lneas a,ules de separacin. 8. 6orre la propiedad Text &aciendo clic en Text en la ventana Propiedades " presionando la tecla 7ET7O!E'O. 9. !ambie el tama-o de fuente a ,/.0/. *aga clic en el signo ms #ue aparece junto a la propiedad Font en la ventana Propiedades% #ue muestra varias propiedades% incluida la propiedad "i#e% como se muestra en la siguiente imagen. (entana Propiedades con el tama-o de fuente
8. 5 continuacin% arrastre otro control 'a el desde el !uadro de &erramientas " estable,ca sus propiedades 1. !ambie el tama-o de fuente a ,/.0/. ). Estable,ca la propiedad Text en Tiempo restante. +. 5rrstrelo para alinearlo a la i,#uierda de la eti#ueta time'a el.
2 de 7
http://msdn.microsoft.com/es-es/library/dd492178.aspx
9. 5&ora% agregue los controles para el problema de suma. 5rrastre un control 'a el desde el cuadro de &erramientas "% a continuacin% estable,ca sus propiedades 1. Estable,ca la propiedad Text en 1 1signo de interrogacin4. ). Estable,ca la propiedad Auto"i#e en False. +. Estable,ca la propiedad "i#e en 2+. /+. 0. !ambie el tama-o de fuente a ,3. .. !ambie la propiedad TextAli-n a &iddleCenter. 8. !ambie la propiedad 'ocation a 0/. 0/ para colocarlo en el formulario. 9. !ambie la propiedad (Name) propiedad a plus'e4t'a el. <. 'eleccione la eti#ueta plus'e4t'a el " cpiela. 1Presione !trl:! o bien seleccione Copiar en el men$ 5dicin.4 5 continuacin% realice las acciones siguientes 1. P;guelo tres veces. 1Presione !trl:(% o bien seleccione Pe-ar en el men$ 5dicin.4 ). Organice las tres nuevas eti#uetas para #ue los cuadros est;n en fila a la derec&a de la eti#ueta plus'e4t'a el% utili,ando las lneas de separacin para separarlas " alinearlas. +. !ambie la propiedad Text de la segunda eti#ueta a 6 1signo ms4. 0. !ambie la propiedad (Name) de la tercera eti#ueta a plus7i-ht'a el. .. !ambie la propiedad Text de la cuarta eti#ueta a 8 1signo igual4. =. 5rrastre un control Numeric9p%own desde el !uadro de &erramientas "% a continuacin% &aga lo siguiente 1. !ambie el tama-o de fuente a ,3 "% a continuacin% estr;c&elo para #ue el anc&o sea ,++. ). 5rrstrelo &asta #ue se alinee con los controles 'a el del problema de suma. +. !ambie la propiedad (Name) a suma. 15prenderemos ms cosas acerca del control Numeric9p%own ms adelante.4 5&ora% la prueba tiene una primera fila% como se muestra en la siguiente imagen. Primera fila de la prueba matemtica
3 de 7
http://msdn.microsoft.com/es-es/library/dd492178.aspx
1/. 'eleccione los cinco controles del problema de suma 1los cuatro controles 'a el " el control Numeric9p%own4 " cpielos. 5 continuacin% realice las acciones siguientes 1. Pegue los controles% con lo #ue se deberan agregar cinco nuevos controles al formulario. ). >os controles deberan seguir estando seleccionados% de modo #ue pueda &acer clic en uno de ellos " arrastrarlos a su lugar para #ue #ueden alineados debajo de los controles de suma. ?tilice las lneas de separacin para proporcionar una distancia suficiente entre las dos filas. +. !ambie la propiedad Text de la segunda eti#ueta a : 1signo menos4. 0. !ambie el nombre de la primera eti#ueta del signo de interrogacin a minus'e4t'a el. .. !ambie el nombre de la segunda eti#ueta de signo de interrogacin a minus7i-ht'a el. 8. !ambie el nombre del control Numeric9p%own a di4erencia. 11. Pegue los cinco controlan dos veces ms "% a continuacin% &aga lo siguiente 1. Para la tercera fila% cambie el nombre de la primera eti#ueta a times'e4t'a el% cambie la propiedad Text de la segunda eti#ueta a ; 1signo de multiplicacin4% cambie el nombre de la tercera eti#ueta a times7i-ht'a el " cambie el nombre del control Numeric9p%own a producto. ). Para la cuarta fila% cambie el nombre de la primera eti#ueta a divided'e4t'a el% cambie la propiedad Text de la segunda eti#ueta a < 1signo de divisin4% cambie el nombre de la tercera eti#ueta a divided7i-ht'a el " cambie el nombre del control Numeric9p%own a cociente.
4 de 7
http://msdn.microsoft.com/es-es/library/dd492178.aspx
Nota Puede copiar el signo de multiplicacin @ " el signo de divisin A de este tutorial " pegarlos en el 23E. 1). 'e necesita un control ms en el formulario un botn para iniciar la prueba. 5rrastre un control Button desde el !uadro de &erramientas "% a continuacin% estable,ca sus propiedades 1. Estable,ca la propiedad (Name) en startButton. ). Estable,ca la propiedad Text en =niciar la prue a. +. Estable,ca el tama-o de fuente en ,>. 0. Estable,ca la propiedad Auto"i#e en True% para #ue el tama-o del botn se ajuste automticamente al texto. .. 5rrastre el botn &asta la parte inferior del formulario " mu;valo para #ue #uede centrado. 1+. Por $ltimo% &aga clic en el control startButton "% a continuacin% &aga lo siguiente 1. Estable,ca la propiedad Ta =ndex en ,. ). *aga clic en el control Numeric9p%own de suma. +. Estable,ca la propiedad Ta =ndex en *. 0. Estable,ca los dems controles Numeric9p%own estable,ca la propiedad Ta =ndex del control de diferencia en $% la propiedad Ta =ndex del control de producto en >% " la propiedad Ta =ndex del control de cociente en /. 5&ora% el formulario debera tener un aspecto similar a la siguiente imagen. Bormulario de prueba matemtica inicial
5 de 7
http://msdn.microsoft.com/es-es/library/dd492178.aspx
Nota >a finalidad de la propiedad Ta =ndex es establecer el orden de los controles cuando el usuario presiona la tecla T56. 5bra cual#uier cuadro de dilogo 1por ejemplo% en el men$ Archivo% seleccione A rir4 " presione la tecla T56 varias veces. Observe cmo se mueve el cursor de un control a otro cada ve, #ue se presiona la tecla T56. 5l dise-ar este formulario originalmente% un programador decidi el orden. 10. Para ver cmo funciona la propiedad Ta =ndex% guarde el programa% ejec$telo "% a continuacin% presione la tecla T56 varias veces.
Adiciones de comunidad
6 de 7
http://msdn.microsoft.com/es-es/library/dd492178.aspx
7 de 7
http://msdn.microsoft.com/es-es/library/dd492147.aspx
Este artculo se tradujo de forma manual. Mueva el puntero sobre las frases del artculo para ver el texto original. Ms informacin.
Traduccin
Original
public partial class Form1 : Form { // Create a Random object to generate random numbers. Random randomizer = new Random()
1 de 6
http://msdn.microsoft.com/es-es/library/dd492147.aspx
Nota En el tutorial del laberinto$ creamos dos componentes #oundPla*er mediante la instruccin new. Esto +ace algo similar. "a %nica diferencia es (ue$ al contrario (ue #oundPla*er$ Random no es un componente ni un control$ de modo (ue no podemos llamarlo as. #e denomina objeto. Probablemente +abr odo la palabra objeto antes. Obtendr ms informacin sobre lo (ue significa en los prximos tutoriales. -e momento$ todo lo (ue necesita saber es (ue cuando el programa utili)a una instruccin new para crear botones$ eti(uetas$ paneles$ elementos Open.ile-ialog$ !olor-ialog$ #oundPla*er o /andom$ e incluso formularios$ el elemento (ue se crea se denomina objeto. "os tutoriales posteriores muestran muc+a ms informacin sobre cmo funcionan estos objetos. 2. &+ora$ al iniciar el formulario$ crea un nuevo objeto Random * le da el nombre randomizer. !omo con los elementos #oundPla*er$ si entramos en un m'todo * comen)amos a escribir randomi)er con un punto 0.1 a continuacin$ se abre una ventana ntelliSense (ue muestra todos los m'todos del objeto Random a los (ue se puede llamar. El m'todo Ne!t() se utili)a como se indica a continuacin. M'todo 2ext
!uando se llama a random"Ne!t(#0)$ se obtiene un n%mero aleatorio (ue es menor (ue 34 0del 4 al 561. ;. Pronto compilaremos un m'todo para comprobar las respuestas$ de modo (ue el programa tiene (ue recordar (u' n%meros +a elegido para los problemas. &gregue un valor de tipo integer 0denominado valor de tipo int en !7 o 8nteger en 9isual :asic1 denominado addend1 * otro denominado addend2 al formulario 0igual (ue agreg el objeto Random denominado randomizer1$ como sigue. C#
2 de 6
http://msdn.microsoft.com/es-es/library/dd492147.aspx
// Create a Random object to generate random numbers. Random randomizer = new Random() // !"ese ints will store t"e numbers // #or t"e addition problem. int addend1 int addend$
Nota <n valor de tipo int 08nteger1 se utili)a para almacenar un valor num'rico positivo o negativo. Puede contener cual(uier n%mero comprendido entre el =2,5>5?;@5? * el 2,5>5?;@5>. #lo puede almacenar los n%meros enteros * no los decimales. 5. "uego$ agregue un m'todo denominado StartTheQuiz() (ue utili)a el m'todo Ne!t() del objeto Random para elegir dos n%meros * colocarlos en las eti(uetas. Aradualmente ir rellenando todos los problemas e iniciar el tempori)ador$ as (ue debe agregar un comentario. -ebe tener este aspecto C#
/// %summar&' /// (tart t"e )uiz b& #illing in all o# t"e problems /// and starting t"e timer. /// %/summar&' public *oid (tart!"e+uiz() { // Fill in t"e addition problem. addend1 = randomizer.,e-t(.1) addend$ = randomizer.,e-t(.1) plus/e#t/abel.!e-t = addend1.!o(tring() plusRig"t/abel.!e-t = addend$.!o(tring() sum.0alue = 1 2
3 de 6
http://msdn.microsoft.com/es-es/library/dd492147.aspx
Nota /ecuerde (ue +a llamado a randomizer"Ne!t(#1). El motivo de utili)ar 3, * no 34 es (ue los dos n%meros sumen una respuesta (ue est' comprendida entre el 4 * el ,44. #i pasa 34 al m'todo Ne!t()$ elegir un n%mero del 4 al 56$ de modo (ue ma*or respuesta posible sera 6?$ * no ,44. -espu's de ejecutarse las dos primeras instrucciones del m'todo$ cada uno de los dos valores de tipo int 08nteger1$ addend, * addend2$ contiene un n%mero aleatorio del 4 al 34. .ij'monos con ms atencin en estas instrucciones. C#
"as instrucciones establecen las propiedades Te!t de las dos eti(uetas plus$ $lus%e&t%a'el * $lusRi(ht%a'el$ para (ue muestren los dos n%meros aleatorios. Ba* (ue utili)ar el m'todo ToStrin(() del valor int 08nteger1 para convertirlo en texto 0en programacin$ string$ o cadena$ significa texto1$ por(ue los controles %a'el %nicamente muestran texto$ * no n%meros. 3. El botn de inicio debe iniciar la prueba. Para ello$ va*a al -iseCador de DindoEs .orms * +aga doble clic en el botn$ a fin de agregar un controlador de eventos Cli)*. & continuacin$ agregue las dos instrucciones siguientes. C#
4 de 6
http://msdn.microsoft.com/es-es/library/dd492147.aspx
!onoce lo (ue +ace la primera instruccin "lama al nuevo m'todo de StartTheQuiz() . "a segunda instruccin establece la propiedad de +a'ilitada de control de )la,e ini)ial a -also. !on ello se des+abilita el botn$ de modo (ue el usuario no pueda +acer clic en 'l. -e esta forma$ el usuario puede +acer clic en el botn de inicio una sola ve). & continuacin$ el botn aparece atenuado * no est disponible$ * el usuario debe finali)ar la prueba antes de (ue se agote el tiempo 0o cerrar el programa1. @. &+ora$ guarde * ejecute el programa. Baga clic en el botn de inicio. -ebe aparecer un problema de suma aleatoria$ como se muestra en la siguiente imagen. Problema de suma aleatoria
Adiciones de comunidad
5 de 6
http://msdn.microsoft.com/es-es/library/dd492147.aspx
6 de 6
http://msdn.microsoft.com/es-es/library/dd492144.aspx
Este artculo se tradujo de forma manual. Mueva el puntero sobre las frases del artculo para ver el texto original. Ms informacin.
Traduccin
Original
public partial class Form1 : Form { // Create a Random object to generate random numbers. Random randomizer = new Random() // !"ese ints will store t"e numbers // #or t"e addition problem. int addend1 int addend$ // !"is int will %eep trac% o# t"e time le#t. int time&e#t
1 de 5
http://msdn.microsoft.com/es-es/library/dd492144.aspx
,. !*ora$ *a- %ue agregar algo %ue cuente el tiempo de verdad$ como un tempori"ador. .a-a al /ise0ador de 1indo2s 3orms - arrastre un control Timer del #uadro de *erramientas 'en la categora Componentes) *asta el formulario. !parecer en el rea gris de la parte inferior del /ise0ador de 1indo2s 3orms. 3. 4aga clic en el icono timer1 %ue acaba de agregar - estable"ca la propiedad Interval en 1000. Esto *ace %ue el evento Tic5 se desencadene cada segundo. ! continuacin$ *aga doble clic en el icono para agregar el controlador de eventos Tic5. El (/E cambiar al editor de cdigo - saltar al nuevo m6todo de control de eventos. !gregue las instrucciones siguientes. C#
pri'ate 'oid timer1(!ic%(object sender) *'ent+rgs e) { i# (time&e#t , -) { // .ispla/ t"e new time le#t // b/ updating t"e !ime &e#t label. time&e#t = time&e#t 0 1 time&abel.!e1t = time&e#t 2 3 seconds3 4 else { // 5# t"e user ran out o# time) stop t"e timer) s"ow // a 6essage7o1) and #ill in t"e answers. timer1.8top() time&abel.!e1t = 3!ime9s up:3 6essage7o1.8"ow(3;ou didn9t #inis" in time.3) 38orr/3) sum.<alue = addend1 2 addend$ start7utton.*nabled = true 4 4
7eg&n lo %ue *emos agregado$ cada segundo el tempori"ador comprobar si se *a agotado el tiempo. Para ello$ comprueba si el valor de tipo int '(nteger) de timeLeft es ma-or %ue 8. 7i lo es$ %ueda tiempo. En primer lugar$ el tempori"ador resta + a time9eft -$ a continuacin$ actuali"a la propiedad Text del control timeLabel para mostrar al usuario cuntos segundos %uedan. 7i no %ueda tiempo$ el tempori"ador se detiene - cambia el texto del control timeLabel de modo %ue muestre %ue se agot
2 de 5
http://msdn.microsoft.com/es-es/library/dd492144.aspx
el tiempo. !parecer un cuadro de mensaje %ue indicar al usuario %ue la prueba *a finali"ado. 7e revela la respuesta. En este caso$ se suman addend+ - addend,. 9a propiedad Enabled del control startButton se establece en true$ para %ue botn vuelva a estar disponible. /e ese modo$ el usuario puede volver a empe"ar la prueba. 4emos agregado una instruccin if else$ %ue es la manera de indicar a los programas %ue tomen decisiones. :na instruccin if else tiene el siguiente aspecto. VB 5# (somet"ing /our program will c"ec%) !"en 9 statements t"at will get e1ecuted 9 i# t"e t"ing t"at t"e program c"ec%ed is true *lse 9 statements t"at will get e1ecuted 9 i# t"e t"ing t"at t"e program c"ec%ed is =>! true *nd 5#
C# i# (somet"ing /our program will c"ec%) { // statements t"at will get e1ecuted // i# t"e t"ing t"at t"e program c"ec%ed is true 4 else { // statements t"at will get e1ecuted // i# t"e t"ing t"at t"e program c"ec%ed is =>! true 4
.amos a fijarnos con ms atencin en la instruccin %ue *emos agregado en el blo%ue else$ para mostrar la respuesta al problema de suma. C#
3 de 5
http://msdn.microsoft.com/es-es/library/dd492144.aspx
#omo probablemente sabr$ addend1 2 addend$ suma los dos valores. 9a primera parte 'sum.<alue) utili"a la propiedad Value del control Numeri !p"o#n para mostrar la respuesta correcta. 9a propiedad Value se utili"a de nuevo ms tarde$ para comprobar las respuestas de la prueba. :n control Numeri !p"o#n facilita al usuario la escritura de n&meros. Este es el motivo por el %ue se utili"a este control para las respuestas a los problemas de matemticas. /ado %ue todas las respuestas son n&meros del 8 al +88$ se dejan las propiedades predeterminadas $inimum - $aximum establecidas en 8 - +88. Esto *ace %ue el control &nicamente permita al usuario escribir un n&mero del 8 al +88. #omo las respuestas solo pueden ser n&meros enteros$ la propiedad "e imal%la es se deja establecida en 8$ lo %ue significa %ue el usuario no puede escribir decimales. '7i desea permitir %ue el usuario escriba 3$+;+ pero no 3$+;+<$ podra establecer la propiedad "e imal%la es en 3.) ;. !gregue tres lneas al final de m6todo StartT&e'ui()*$ de modo %ue el cdigo tenga este aspecto. C#
/// ?summar/, /// 8tart t"e @uiz b/ #illing in all o# t"e problems /// and starting t"e timer. /// ?/summar/, public 'oid 8tart!"eAuiz() { // Fill in t"e addition problem. addend1 = randomizer.=e1t(B1) addend$ = randomizer.=e1t(B1) plus&e#t&abel.!e1t = addend1.!o8tring() plusRig"t&abel.!e1t = addend$.!o8tring() sum.<alue = // 8tart t"e timer. time&e#t = Ctime&abel.!e1t = 3C- seconds3 timer1.8tart() 4
!*ora$ al empe"ar la prueba$ establece el valor de tipo int '(nteger) de timeLeft en 38 - cambia la propiedad Text del control
4 de 5
http://msdn.microsoft.com/es-es/library/dd492144.aspx
timeLabel a 38 segundos. ! continuacin$ llama al m6todo Start)* del control Timer para iniciar la cuenta atrs. 'Todava no comprueba la respuesta$ esto viene despu6s.) <. =uarde - ejecute el programa. !l *acer clic en el botn de inicio$ el tempori"ador debera iniciar la cuenta atrs. #uando se agota el tiempo$ la prueba finali"a - se muestra la respuesta. En la siguiente imagen se muestra la prueba en marc*a. Prueba matemtica en marc*a
Adiciones de comunidad
> ,8+3 Microsoft. ?eservados todos los derec*os.
5 de 5
http://msdn.microsoft.com/es-es/library/dd492165.aspx
Este artculo se tradujo de forma manual. Mueva el puntero sobre las frases del artculo para ver el texto original. Ms informacin.
Traduccin
Original
Nota Para )uienes estn reali+ando este tutorial en ,isual -asic* cabe destacar )ue* como este m"todo devuelve un valor* en lugar de la palabra clave Sub usual debern utili+ar la palabra clave Function. .ealmente es as de sencillo las subrutinas no devuelven valores* las funciones* s.
/// <summary> /// Check the answer to see if the user got everything right. /// </summary> /// <returns>True if the answer's correct, false otherwise.</returns> private bool CheckTheAnswer ! " if a##en#$ % a##en#& '' sum.(alue!
1 de 4
http://msdn.microsoft.com/es-es/library/dd492165.aspx
El programa debe llamar a este m"todo para comprobar si el usuario respondi correctamente. Para ello* se agrega i# else a la instruccin. 5a instruccin tiene un aspecto parecido al siguiente. C"
if "
time,eft > -! statements that will get e+ecute# if there's still time left on the timer
1. 5uego* se modifica el controlador de eventos Tic% del tempori+ador para comprobar la respuesta. El nuevo controlador de eventos con comprobacin de respuesta debera incluir lo siguiente. C"
2 de 4
http://msdn.microsoft.com/es-es/library/dd492165.aspx
// 1f the user got the answer right, stop the timer // an# show a 2essage3o+. timer$.4top !) 2essage3o+.4how 56ou got all the answers right75, 5Congratulations5!) start3utton.0nable# ' true) * else if time,eft > -! " // 8ecrease the time left by one secon# an# #isplay // the new time left by up#ating the Time ,eft label. time,eft99) time,abel.Te+t ' time,eft % 5 secon#s5) * else " // 1f the user ran out of time, stop the timer, show // a 2essage3o+, an# fill in the answers. timer$.4top !) time,abel.Te+t ' 5Time's up75) 2essage3o+.4how 56ou #i#n't finish in time.5, 54orry5!) sum.(alue ' a##en#$ % a##en#&) start3utton.0nable# ' true) * *
!$ora* si el controlador de eventos del tempori+ador detecta )ue el usuario respondi correctamente* detiene el tempori+ador* muestra un mensaje de felicitacin 0 $ace )ue el botn de inicio vuelva a estar disponible. 9. 6uarde 0 ejecute el programa. 7nicie el juego 0 escriba la respuesta correcta al problema de suma.
Nota !l escribir la respuesta* puede )ue observe algo extra8o en el control NumericUpDown. 2i empie+a a escribir sin seleccionar toda la respuesta* el cero no desaparece 0 $a0 )ue eliminarlo manualmente. #orregiremos esto ms adelante en este tutorial. 4. !l escribir la respuesta correcta* debe abrirse el cuadro de mensaje* detenerse el tempori+ador 0 volver a estar disponible el
3 de 4
http://msdn.microsoft.com/es-es/library/dd492165.aspx
botn de inicio. :aga clic de nuevo en el botn de inicio para asegurarse de )ue suceda as.
Adiciones de comunidad
4 de 4
http://msdn.microsoft.com/es-es/library/dd492138.aspx
Este artculo se tradujo de forma manual. Mueva el puntero sobre las frases del artculo para ver el texto original. Ms informacin.
Traduccin
Original
Nota !un'ue puede parecer un comportamiento extra)o* &a0 una explicacin. !l &acer clic en el botn de inicio* la propiedad Enabled del botn est establecida en False1 el botn aparece atenuado 0 no est disponible. El programa busca el control con el siguiente valor de Tab2ndex ms bajo* el control NumericUpDown de la suma* 0 cambia el foco a ese control. 3uando se presiona la tecla T!4 para ir a un control NumericUpDown* el cursor se sit(a automticamente al principio del control1 este es el motivo por el cual los n(meros 'ue se escriben aparecen a la i5'uierda 0 no a la derec&a. 3uando se escribe un n(mero encima de la propiedad MaximumValue* 'ue est establecida en -66* reempla5a el n(mero escrito con el valor mximo.
1 de 3
http://msdn.microsoft.com/es-es/library/dd492138.aspx
private void answer_Enter(object sender, EventArgs e) { // Select the whole answer in the Numeric p!own control" Numeric p!own answer#o$ % sender as Numeric p!own& i' (answer#o$ (% null) { int length)'Answer % answer#o$"*alue"+oString()",ength& answer#o$"Select(-, length)'Answer)&
2 de 3
http://msdn.microsoft.com/es-es/library/dd492138.aspx
/ /
!un'ue inicialmente pare5ca complejo* resulta ms fcil de entender si se examina paso a paso. En primer lugar* fjese en la parte superior del m/todo object sender en 38 o sender As S.stem")bject en 9isual 4asic. Esto significa 'ue dentro del m/todo* cada ve5 'ue se utili5a sender* &ace referencia al control NumericUpDown cu0o evento Enter se desencadena. !s 'ue* en la primera lnea del m/todo* se especifica 'ue no se trata de un simple objeto* sino 'ue es concretamente un control NumericUpDown. +3ada control NumericUpDown es un objeto* pero no todos los objetos son un control NumericUpDown., En la lnea siguiente se comprueba si se &a llevado a cabo correctamente la conversin +de tipos, de ans%er4ox de un objeto a un control NumericUpDown. .i la conversin de tipos no &a sido correcta* su valor sera null +38, o "ot&ing +9isual 4asic,. En la tercer lnea se busca la longitud de la respuesta 'ue se muestra actualmente en el control NumericUpDown. En la cuarta lnea se ordena al control NumericUpDown 'ue seleccione la respuesta. !&ora* cuando el usuario navega al control* desencadena este evento* lo 'ue provoca 'ue se seleccione la respuesta. En cuanto el usuario empie5a a escribir* se borra la respuesta anterior 0 se reempla5a con la nueva. 7. #na ve5 'ue se &a0a implementado este controlador de eventos* va0a al $ise)ador de :indo%s ;orms 0 seleccione el control NumericUpDown de diferencia. 9a0a a la pgina E entos del cuadro de dilogo !ropiedades* desplcese &acia abajo &asta el evento Enter 0 seleccione el controlador de eventos 'ue acaba de agregar. <. ! continuacin* &aga lo mismo para los controles NumericUpDown del producto 0 del cociente. >. =uarde 0 ejecute el programa. El comportamiento extra)o 0a no se debera producir.
Adiciones de comunidad
A 76-< Microsoft. Beservados todos los derec&os.
3 de 3
http://msdn.microsoft.com/es-es/library/dd492142.aspx
Este artculo se tradujo de forma manual. Mueva el puntero sobre las frases del artculo para ver el texto original. Ms informacin.
Traduccin
Original
!lmacenar los valores de resta. #enerar n$meros aleatorios para el problema %& asegurarse de 'ue la respuesta est( comprendida entre ) & *))+. !ctuali,ar el m(todo 'ue comprueba las respuestas para 'ue compruebe tambi(n el nuevo problema de resta. !ctuali,ar el controlador eventos Tic- del tempori,ador para 'ue rellene la respuesta correcta cuando se agote el tiempo.
public partial class Form1 : Form { // Create a Random object to generate random numbers. Random randomizer = new Random() // !"ese ints will store t"e numbers // #or t"e addition problem.
1 de 6
http://msdn.microsoft.com/es-es/library/dd492142.aspx
int addend1 int addend$ // !"ese ints will store t"e numbers // #or t"e subtraction problem. int minuend int subtra"end // !"is int will %eep trac% o# t"e time le#t. int time&e#t
Nota /os nombres de los nuevosminuendo & sustraendo0 t(rminos de programacin & sustraendo+. 1e trata de los nombres utili,ados tradicionalmente en aritm(tica para el n$mero 'ue se resta %el substraendo+ & el n$mero del 'ue se resta %el minuendo+. /a diferencia es el minuendo menos el sustraendo. Puede utili,ar otros nombres" por'ue el programa no re'uiere nombres especficos para los valores de tipo int" los controles" los componentes o los m(todos. 2a& algunas reglas %por ejemplo" los nombres no pueden comen,ar con dgitos+" pero en general" podra utili,ar nombres como x*" x3" x4" x5" etc. 1in embargo" sera difcil leer el cdigo & casi imposible reali,ar el seguimiento de los problemas. Ms adelante en este tutorial utili,aremos los t(rminos tradicionales para la multiplicacin %multiplicand 6 multiplier 7 product" multiplicando 6 multiplicador 7 producto+ & la divisin %dividend 8 divisor 7 'uotient" dividendo 8 divisor 7 cociente+. 3. ! continuacin" modifi'ue el m(todo StartTheQuiz() para rellenar un problema de resta aleatorio. El nuevo cdigo aparece tras el comentario 9:ill in t.e subtraction problem9. El cdigo debe tener este aspecto. C#
/// 'summar() /// *tart t"e +uiz b( #illing in all o# t"e problems /// and starting t"e timer. /// '/summar() public ,oid *tart!"e-uiz() { // Fill in t"e addition problem. addend1 = randomizer..e/t(01) addend$ = randomizer..e/t(01) plus&e#t&abel.!e/t = addend1.!o*tring()
2 de 6
http://msdn.microsoft.com/es-es/library/dd492142.aspx
plusRig"t&abel.!e/t = addend$.!o*tring() sum.1alue = 2 // Fill in t"e subtraction problem. minuend = randomizer..e/t(13 121) subtra"end = randomizer..e/t(13 minuend) minus&e#t&abel.!e/t = minuend.!o*tring() minusRig"t&abel.!e/t = subtra"end.!o*tring() di##erence.1alue = 2 // *tart t"e timer. time&e#t = 42 time&abel.!e/t = 542 seconds5 timer1.*tart() 6
Este cdigo utili,a el m(todo Next() de la clase Random de una forma algo distinta. !l darle dos valores" elige al a,ar uno 'ue sea ma&or o igual 'ue el primero & menor 'ue el segundo. /a siguiente lnea elige un n$mero aleatorio del * al *)) & lo almacena en el minuendo. C#
1e puede llamar al m(todo Next() de la clase Random de varias formas. ;uando se puede llamar a un m(todo de ms de una manera" se denomina mtodo sobrecargado. Puede utili,ar <ntelli1ense para explorar esta posibilidad. :ij(monos de nuevo en la informacin sobre .erramientas de la ventana IntelliSense del m(todo Next(). <nformacin sobre .erramientas de la ventana <ntelli1ense
3 de 6
http://msdn.microsoft.com/es-es/library/dd492142.aspx
Observe 'ue la informacin sobre .erramientas muestra (+ 2 so re!ar"as). Esto significa 'ue .a& dos formas ms de llamar al m(todo Next() . !l escribir el nuevo cdigo para el m(todo StartTheQuiz()" puede ver ms informacin. En cuanto escriba randomizer..e/t(3 aparecer la ventana <ntelli1ense. Presione las teclas de direccin !==<>! & !>!?O para recorrer cclicamente las sobrecargas" como se muestra en la siguiente imagen. 1obrecargas en la ventana <ntelli1ense
/a de la imagen anterior es la 'ue deseamos utili,ar" por'ue permite especificar un valor mnimo & mximo. 4. Modifi'ue el m(todo Che!#The$ns%er() para 'ue compruebe si la respuesta de la resta es correcta. El cdigo debe tener este aspecto. C#
/// 'summar() /// C"ec% t"e answer to see i# t"e user got e,er(t"ing rig"t. /// '/summar() /// 'returns)!rue i# t"e answer7s correct3 #alse ot"erwise.'/returns) pri,ate bool C"ec%!"e8nswer()
4 de 6
http://msdn.microsoft.com/es-es/library/dd492142.aspx
{ i# ((addend1 9 addend$ == sum.1alue) :: (minuend ; subtra"end == di##erence.1alue)) return true else return #alse 6
&& es el operador lo"i!al and de @isual ;A. En @isual >asic" el operador e'uivalente es $nd$lso. E'uivale a decir" 91i addend* ms addend3 es igual al valor de la suma BumericCpDoEn" & si el minuendo menos el sustraendo es igual al valor de la diferencia BumericCpDoEn9. El m(todo Che!#The$ns%er() devuelve true $nicamente si el problema de suma es correcto & el problema de resta es correcto. 5. ;ambie la $ltima parte del controlador de evento Tic- del tempori,ador de modo 'ue rellene la respuesta correcta cuando se agote el tiempo. El cdigo debe tener este aspecto. C#
else { // <# t"e user ran out o# time3 stop t"e timer3 s"ow // a =essage>o/3 and #ill in t"e answers. timer1.*top() time&abel.!e/t = 5!ime7s up?5 =essage>o/.*"ow(5@ou didn7t #inis" in time.53 5*orr(5) sum.1alue = addend1 9 addend$ di##erence.1alue = minuend ; subtra"end start>utton.Anabled = true 6
F. #uarde & ejecute el cdigo. !.ora" el programa deber incluir un problema de resta" como se muestra en la siguiente imagen. ;uestionario de matemticas con un problema de resta
5 de 6
http://msdn.microsoft.com/es-es/library/dd492142.aspx
Adiciones de comunidad
H 3)*4 Microsoft. =eservados todos los derec.os.
6 de 6
http://msdn.microsoft.com/es-es/library/dd492175.aspx
Este artculo se tradujo de forma manual. Mueva el puntero sobre las frases del artculo para ver el texto original. Ms informacin.
Traduccin
Original
public partial class Form1 : Form { // Create a Random object to generate random numbers. Random randomizer = new Random() // !"ese ints will store t"e numbers #or t"e addition problem. int addend1 int addend$ // !"ese ints will store t"e numbers #or t"e subtraction problem. int minuend int subtra"end // !"ese ints will store t"e numbers #or t"e multiplication problem. int multiplicand
1 de 6
http://msdn.microsoft.com/es-es/library/dd492175.aspx
int multiplier // !"ese ints will store t"e numbers #or t"e di%ision problem. int di%idend int di%isor // !"is int will &eep trac& o# t"e time le#t. int time'e#t
-. !l igual %ue antes$ modifi%ue el m,todo StartTheQuiz() para rellenar problemas de multiplicaciones " divisiones aleatorias. El cdigo debe tener este aspecto. C#
/// (summar)* /// +tart t"e ,uiz b) #illing in all o# t"e problems /// and starting t"e timer. /// (/summar)* public %oid +tart!"e-uiz() { // Fill in t"e addition problem. addend1 = randomizer..e/t(01) addend$ = randomizer..e/t(01) plus'e#t'abel.!e/t = addend1.!o+tring() plusRig"t'abel.!e/t = addend$.!o+tring() sum.1alue = 2 // Fill in t"e subtraction problem. minuend = randomizer..e/t(13 121) subtra"end = randomizer..e/t(13 minuend) minus'e#t'abel.!e/t = minuend.!o+tring() minusRig"t'abel.!e/t = subtra"end.!o+tring() di##erence.1alue = 2 // Fill in t"e multiplication problem. multiplicand = randomizer..e/t($3 11) multiplier = randomizer..e/t($3 11) times'e#t'abel.!e/t = multiplicand.!o+tring()
2 de 6
http://msdn.microsoft.com/es-es/library/dd492175.aspx
timesRig"t'abel.!e/t = multiplier.!o+tring() product.1alue = 2 // Fill in t"e di%ision problem. di%isor = randomizer..e/t($3 11) int temporar)-uotient = randomizer..e/t($3 11) di%idend = di%isor 4 temporar)-uotient di%ided'e#t'abel.!e/t = di%idend.!o+tring() di%idedRig"t'abel.!e/t = di%isor.!o+tring() ,uotient.1alue = 2 // +tart t"e timer. time'e#t = 52 time'abel.!e/t = 652 seconds6 timer1.+tart() 7
.. Modifi%ue el m,todo CheckTheAnswer() para %ue tambi,n compruebe los problemas de divisin " multiplicacin. El cdigo debe tener este aspecto. C#
3 de 6
http://msdn.microsoft.com/es-es/library/dd492175.aspx
/// (summar)* /// C"ec& t"e answer to see i# t"e user got e%er)t"ing rig"t. /// (/summar)* /// (returns*!rue i# t"e answer8s correct3 #alse ot"erwise.(/returns* pri%ate bool C"ec&!"e9nswer() { i# ((addend1 : addend$ == sum.1alue) ;; (minuend < subtra"end == di##erence.1alue) ;; (multiplicand 4 multiplier == product.1alue) ;; (di%idend / di%isor == ,uotient.1alue)) return true else return #alse 7
Nota /ado %ue no +a" ninguna manera simple de escribir el signo de multiplicacin &0( " el signo de divisin &1( mediante el teclado$ 2isual 34 " 2isual 5asic utili#an el asterisco &6( para la multiplicacin " la barra diagonal &7( para la divisin. 9. 3ambie la *ltima parte del controlador de evento Tic8 del tempori#ador de modo %ue rellene la respuesta correcta cuando se agote el tiempo. El cdigo debe tener este aspecto. C#
else { // =# t"e user ran out o# time3 stop t"e timer3 s"ow // a >essage?o/3 and #ill in t"e answers. timer1.+top() time'abel.!e/t = 6!ime8s up@6 >essage?o/.+"ow(6Aou didn8t #inis" in time.63 6+orr)6) sum.1alue = addend1 : addend$ di##erence.1alue = minuend < subtra"end product.1alue = multiplicand 4 multiplier
4 de 6
http://msdn.microsoft.com/es-es/library/dd492175.aspx
;. :uarde " ejecute el programa. !+ora$ +a" %ue responder a cuatro problemas para completar la prueba$ como se muestra en la siguiente imagen. Prueba matemtica con cuatro problemas
Adiciones de comunidad
5 de 6
http://msdn.microsoft.com/es-es/library/dd492175.aspx
6 de 6
http://msdn.microsoft.com/es-es/library/dd492174.aspx
Este artculo se tradujo de forma manual. Mueva el puntero sobre las frases del artculo para ver el texto original. Ms informacin.
Traduccin
Original
Adiciones de comunidad
/ 0123 Microsoft. (eservados todos los derec*os.
1 de 1