Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
u s e r s . t e c t i m e s . c o m28 Mariano Birnios mariano@tectimes.com NT_ProgramacionUEx#44.qxd 5/9/01 5:20 PM Page 28 u s e r s . t e c t i m e s . c o m 29 a programación no es algo “tan nuevo” como se cree; por el contrario, comenzó mucho tiempo atrás. Como diría Snoopy, “era una noche sombría y tormentosa” cuando el hombre vio en las máquinas una fabulosa oportunidad para ayudarlo a resolver sus problemas matemáticos, científicos y, obviamen- te, militares. Allá por el año 1834, Charles Babbage desarrolló una aparatosa máquina mecánica: la Má- quina Analítica (Analytical Engine), como fue bau- tizada. Era una computadora mecánica de propósito general, más que nada utilizada para realizar cálcu- los de todo tipo. La máquina trabajaba con tarjetas perforadas para recibir instrucciones, y según los ori- ficios estratégicamente ubicados en la tarjeta, los dispositivos mecánicos de aquel engendro leían los datos de entrada y operaban hasta llegar al resulta- do. El concepto de tarjeta perforada se siguió utili- zando durante mucho tiempo más, incluso hasta ha- ce algunas décadas (ver imagen). Si bien los meca- nismos de lectura mejoraron, la esencia era la mis- ma, y aunque no tuve la posibilidad de trabajar con aquellos mamotretos, siempre recuerdo a mis profe- sores contando sus hazañas con la programación de máquinas con tarjetas perforadas... Pero Carlitos Babbage no trabajaba solo en el de- sarrollo de su máquina. Lo ayudaba su asistente, la Programar es hermoso. Más que una técnica, para mí es un arte. Programar una computadora es jugar a ser Dios, y los programadores sentimos que somos capaces de crear vida artificial, pero vida al fin, sin la cual la mismísima PC se convertiría en un manojo de chips inservibles. ¿Todavía no programás? Vení, pasá y unite al club... L NT_ProgramacionUEx#44.qxd 5/9/01 5:21 PM Page 29 u s e r s . t e c t i m e s . c o m30 señorita Ada Augusta Byron, una joven muy inteligente, que comprendía muy bien el funcionamiento de la máquina y el poder que podría alcanzar (segura- mente, más de lo que Babbage supo- nía). Luego de unos viajes por el exte- rior, Ada se dispuso a documentar su funcionamiento, basándose en unas lec- turas de Babbage. Lo interesante fue que ella quiso agregar algunas “notas” de su autoría, pero se entusiasmó tanto, que terminó describiendo cómo se po- dría usar la máquina para mucho más que simples cálculos numéricos... Hasta sugirió que se podría utilizar para crear música “artificial”, alimentándola con reglas de armonía y melodía. En cierto modo, estaba describiendo cómo “pro- gramar” el aparato, y por esa razón, pa- ra alegría de todas nuestras lectoras, se considera a la señorita Ada la primera programadora del mundo. Varias déca- das después, existió un lenguaje de pro- gramación llamado ADA, en honor a su trabajo. Pero esto no tomó vuelo sino hasta después de la invención de las compu- tadoras digitales. En 1954 se creó FORTRAN, el primer lenguaje de pro- gramación de alto nivel, que incluía un compilador. Como estaba muy orienta- do a la ingeniería, le dejó el campo abierto a COBOL, que durante mucho tiempo fue el principal lenguaje usado para desarrollar aplicaciones de nego- cios. Seguramente hoy queden restos en algún banco pueblerino... Hoy en día... ¿qué es programar? Como todos saben, el hardware está formado por los componentes físicos de la PC, y el software son los diferentes programas que la hacen funcionar. “Pro- gramar” es crear ese software, que le in- dica a la computadora qué, cómo, dón- de y cuándo tiene que hacer las cosas; es decir, le da instrucciones. Pero, aparte de mandar, también es necesario tomar decisiones, casi de la misma for- ma en que lo hacemos a diario... “Si el semáforo está en verde, entonces cruzo; pero si está en rojo, mejor espero”. Ade- más, muchas veces hay que hacer ciclos repitiendo instrucciones y, en fin, mane- jar otras estructuras. Todo este conjunto de instrucciones termina conformando un algoritmo, una serie de pasos por seguir para lograr un objetivo. Pensemos en un ejemplo ton- to. Imaginemos el trabajo de un progra- ma que, dada una lista de números, cuente cuántos son positivos y cuántos negativos. El razonamiento sería algo como: • Las cantidades de positivos y de ne- gativos son cero, inicialmente. • Tomo el primer número y, si es ma- yor que cero, sumo uno a los positivos; si no, sumo uno a los negativos (deje- mos de lado el caso del cero). • Si hay más números, repito el proce- so con el próximo hasta terminar. • Si termino la lista, informo la cantidad de positivos y de negativos que hubo. La ilustración de la próxima página muestra el funcionamiento lógico del programa usando Diagramas de Flujo, una herramienta que se utiliza para re- presentar el trabajo de algoritmos. Es muy útil para enseñar a programar, aun- que en la práctica casi no se utiliza. Pero en la práctica... ¿cómo se le dice a la PC lo que debe hacer? Nuestra que- rida PC sólo entiende el lenguaje máqui- na, o sea, ceros y unos, pero a nosotros, los mortales, nos resulta algo difícil de comprender. En lugar de eso, es necesa- rio utilizar un lenguaje comprensible por ambas partes (con ciertas “traducciones” de por medio), y aquí es donde intervie- nen los lenguajes de programación. (FORmula TRANslation). El primer lenguaje de alto nivel con compilador. Fue desarrollado por IBM y usado para resolver problemas científicos y de ingeniería. (COmmon Business Oriented Language). Fue un lenguaje orientado al desarrollo de aplicaciones de negocios (bancos, etc.). Se caracterizaba por su horripilante sintaxis. (Beginners All-purpose Simbolic Instruction Code). Fue desarrollado pensando en los principiantes, y resultó muy popular. En 1987 vio la luz el QuickBasic. Un lenguaje estructurado muy utilizado para enseñar programación en las universidades. Actualmente, la versión más popular es Turbo Pascal 7.0, desarrollada por Borland. El lenguaje fue inventado por Dennis Ritchie con vistas a UNIX, pero adquirió tanta popularidad, que luego fue portado a otras plataformas. El ANSI C data de 1983. 1954 1960 1964 1972 LOS LENGUAJES EN EL TIEMPO FORTRAN COBOL BASIC 1971 Pascal C Las tarjetas perforadas también fueron muy utilizadas para el procesamiento de datos (por ejemplo, en censos). Con este fin, una tarjeta equivalía a un registro... una auténtica base de datos en papel. Desde la década del ‘50 hasta la actualidad, se han desarrollado más de 2.000 lenguajes de programación diferentes. Claro está, no todos se volvieron comerciales y adquirieron gran popularidad. De hecho, menos de 40 fueron realmente significativos en la historia informática. NT_ProgramacionUEx#44.qxd 5/9/01 5:21 PM Page 30 u s e r s . t e c t i m e s . c o m 31 Los lenguajes de programación Existen varios lenguajes, para todos los gustos: Visual Basic, C++, Pascal, JAVA, COBOL, Delphi, Visual FoxPro... Aunque, claro, no todos están en uso. La razón por la cual no hay un único lenguaje de programación es simple: hay diferentes metodologías de progra- mación (modular, estructurada, orienta- da a objetos, etc.), y hay lenguajes di- señados para cubrir necesidades especí- ficas (por ejemplo, Visual FoxPro es un lenguaje que apunta al trabajo con ba- ses de datos). Pero ¿cuántos lenguajes creés que han sido desarrollados hasta el día de hoy? Seguramente, menos de lo real. Se han desarrollado más de 2.000 lenguajes diferentes. ¡Increíble! Si querés husmear un rato, en el CD que acompaña a la revista podés encontrar un documento con una breve descrip- ción de cada uno (en inglés), bajado de Internet y mantenido por una universi- dad norteamericana. Los lenguajes de programación se sue- len clasificar en: • Lenguajes de bajo nivel. Son aqué- llos en los que una instrucción del len- guaje equivale a una instrucción de la CPU. El único lenguaje de este grupo es Assembler, que, como todos saben, está íntimamente ligado al procesador sobre el cual corre. Escribir programasen estos lenguajes es una tarea muy laboriosa... • Lenguajes de alto nivel. Son más parecidos al lenguaje humano y, por lo tanto, mucho más fáciles de usar. Sus instrucciones son palabras en inglés, que resultan mucho más sencillas de leer y analizar. En este grupo están BA- SIC, Pascal, Visual Basic, Delphi y Vi- sual FoxPro, entre otros. El lenguaje C, para dar la nota, se suele clasificar co- mo de nivel medio, ya que en cierta par- te comparte elementos de las dos ramas. Cómo se crean los programas Una vez elegido el lenguaje, se escribe el programa. Algunos lenguajes vienen con un IDE (Integrated Development En- vironment) para escribir el código, y hasta resaltan las instrucciones en co- lor. Si no es así, habría que escribir el código con un editor externo, como el mismísimo Bloc de notas. El “texto” escrito de esta forma se lla- ma código fuente (Source Code), pero claro, la máquina no tiene ni idea de lo que significa. Por eso, para poder ejecu- tarlo, primero debe compilarlo. El pro- ceso de compilación lee el texto escrito por el programador, lo traduce a lengua- je máquina y genera el archivo ejecuta- ble como lo conocemos todos, con ex- tensión .exe. ¿Qué elementos se pueden programar? Es posible programar aplicaciones per- sonales, grandes sistemas para empresas, juegos, utilitarios y cualquier otro engen- dro, pero lo importante es que, de acuer- Un sistema de bases de datos para PCs. Según cuenta la historia, fue creado por Wayne Ratliff para manejar el campeonato de fútbol de la empresa donde trabajaba. Nació como un compilador de xBase, un lenguaje utilizado por dBASE. Fue muy popular a principios de los ‘90, pero hoy ya es obsoleto. Nunca tuvo un IDE decente... Un administrador de bases de datos, compatible con dBASE. Las primeras versiones ya son historia, pero hoy sobrevive su hermano mayor, Visual FoxPro. Fue desarrollado por Microsoft para facilitar el desarrollo de aplicaciones Windows. Hoy en día va por la versión 6.0, y es uno de los lenguajes más populares. La versión visual del clásico Pascal. Si bien es muy poderoso, no es el que más adeptos tiene a la hora de hacer sistemas y manejar bases de datos. 1989 19951986 1991 El ejemplo que mencionamos representado con Diagramas de Flujo. Una rápida mirada y ya es posible comprender cómo funciona. dBASE Clipper FoxPro Visual Basic Delphi1980 positivos = 0 negativos = 0 ¿más números? número > 0 negativos = negativos +1 positivos = positivos +1 ➤ ➤ SI SINO NO Mostrar resultados ➤ ➤ ➤➤ NT_ProgramacionUEx#44.qxd 5/9/01 5:21 PM Page 31 do con lo que se vaya a programar, será conveniente elegir un lenguaje u otro. Por ejemplo, en el caso de los juegos co- merciales, casi el cien por cien es desa- rrollado en Visual C++, sin lugar a dudas, el lenguaje más poderoso de la actuali- dad, aunque, evidentemente, no es el más fácil de aprender o utilizar. Nosotros, para los efectos didácticos de esta nota, hemos elegido Visual Basic como len- guaje para aprender. ¿Es el ideal para em- pezar? Más adelante encontrarás la res- puesta, en esta misma nota. Programación visual En los anárquicos tiempos del DOS, los programas se escribían como una serie de instrucciones que, de manera secuen- cial, se iban ejecutando para cumplir con su objetivo. Con la llegada de Win- dows eso cambió radicalmente, y se in- trodujo el concepto de programación vi- sual, con un modelo dirigido por even- tos. La receta es sencilla: 1) Primero se diseñan las ventanas del programa (formularios). 2) En cada una se agregan los objetos (controles) necesarios, como cajas de texto, listas, combos, imágenes, etc. 3) Se establecen las propiedades de los objetos agregados. 4) Por último, se programan los even- tos a los que va a responder cada obje- to, escribiendo código para cada uno. Como todos los lenguajes visuales de hoy en día tienen un buen IDE, crear los formularios y situar controles no es ta- rea complicada. Seguramente, habrá una barra de herramientas con los íconos de los objetos que se pueden agregar, y una ventana para modificar las propie- dades de cada uno. Una propiedad es un atributo de un objeto. Por ejemplo, en Visual Basic, las cajas de texto disponen de una lla- mada BackColor, que determina el color de fondo del texto. La cantidad y el ti- po de propiedades dependen de cada objeto, pero, en general, hay propieda- des para modificar colores, tamaños, comportamiento, texto, bordes y hasta el nombre mismo del objeto (en Visual Basic, propiedad Name). Esta última es muy importante, ya que permite referir- se al objeto a la hora de escribir el có- digo. Por ejemplo, si nuestra caja de texto se llama “txtNombre”, en la ma- yoría de los lenguajes podríamos escri- bir algo similar a: txtNombre.BackColor = 0 Aquí se ve cómo se escribe el nombre del objeto, seguido de un punto y el nombre de la propiedad en cuestión. En este caso, le asignamos el color 0: negro. Otro punto importante son los even- tos. Un evento es un suceso que se pro- duce en un objeto. En el caso de los ob- jetos del formulario, un evento puede ser, por ejemplo, el hecho de que el usuario haga clic sobre un botón. Cada objeto tiene una lista concreta de even- tos a los que responde, y cada uno se programa por separado para definir cuál es la respuesta esperada del objeto. Eso es todo. Simple, ¿no? No tanto. Los primeros dos pasos de nuestra rece- ta son comparables a los de la creación de una página web con FrontPage o con cualquier otro editor visual. Se “tiran” objetos, se establecen sus propiedades, y nuestro pollo va tomando forma vi- sualmente. Pero el último paso es donde realmente se pone la carne al asador: hay que escribir el código. Y en el códi- go es donde más se notan las diferen- cias entre lenguajes. Cada uno tiene su sintaxis, su forma de declarar variables, de hacer ciclos, estructuras de decisión, de trabajar con objetos, etc. Pero, en fin, sólo es cuestión de elegir un len- guaje, y la habilidad para hablar en ese idioma crecerá día a día. Lady Ada Augusta Byron, considerada la primera programadora del mundo. Sus notas datan de la década del ‘40... del siglo XIX. u s e r s . t e c t i m e s . c o m32 El IDE que Delphi 5 nos presenta para crear formularios. Hoy en día, todos los lenguajes modernos cuentan con un IDE para facilitar el desarrollo. La programación visual contribuyó mucho a disminuir el tiempo de desarrollo, facilitando la creación de interfases de usuario. NT_ProgramacionUEx#44.qxd 5/9/01 5:21 PM Page 32 u s e r s . t e c t i m e s . c o m34 S in lugar a dudas, el lenguaje ideal para aprender.¿Por qué? Primero, Visual Basic es un lenguaje de propósito general: se pueden crear aplicaciones de escrito- rio, utilitarios, pequeños juegos, aplicaciones multimedia, sistemas con manejo de bases de datos, componentes reu- tilizables y mucho más. Muchos critican esta generalidad, aduciendo que sirve para tantas cosas, que al final no cum- ple bien con ninguna... Cuán equivocados están. Su sintaxis es clara y simple: tiene un lenguaje amigable, que hace que la lectura del código sea muy sencilla. Pero, para mí, la principal ventaja de Visual Basic es que le permite al programador concentrarse en resolver su pro- blema, y no en lidiar con los vericuetos del lenguaje. Esto aporta mucho al desarrollo rápido de aplicaciones, ya que, por ejemplo, crear un formulario con algunos combos y lis- tados puede llevar unos escasos cinco minutos... no así en Visual C++. Además, para el programador principiante, no lograr resultados en poco tiempo suele resultar frustrante, y en muchos casos termina desistiendo. Pero ¿es un lenguaje sólo para principiantes? Para nada. Si se lo sabe utilizar, es un lenguaje realmente poderoso. D ejando a un lado las pasiones, no se puede discutirque C es el lenguaje más poderoso de nuestros días, y para el entorno Windows, viene en paquetito como Visual C++. Pero claro, poderoso no significa fácil... La ventaja de C es que le otorga muchas libertades al pro- gramador. Su filosofíaes dejarle hacer casi todo, y no es- tar constantemente controlando sus errores. Así, C gana mucha velocidad; pero, obviamente, si el programador no sabe muy bien lo que hace, sus programas terminarán col- gándose misteriosamente... Visual C++ permite crear las más sofisticadas aplicaciones para Windows. Un claro ejemplo son los juegos. Quake III, Flight Simulator, Unreal y otros monstruos del 3D son de- sarrollados en este lenguaje. Pero, a mi modo de ver las co- sas, VC++ no es el lenguaje indicado para, por ejemplo, ha- cer sistemas de información. Creo que uno no puede enfo- car el problema cuando tiene que ocuparse de, por ejem- plo, contar manualmente las referencias a un objeto para saber si se pueden liberar los recursos que utiliza. Pero si a vos te gustan los desafíos, puede resultarte muy provechoso aprender este lenguaje. ✔ Fácil de aprender, sintaxis clara y sencilla. ✔ Uso general (desde bases de datos hasta multimedia). ✖ No soporta totalmente la orientación a objetos. ✖ Las aplicaciones requieren la carga de pesadas librerías. ✔ Completo y poderoso. Desde drivers hasta juegos 3D. ✔ El más rápido del condado, si se lo sabe usar. ✖ Complicado, sintaxis muy engorrosa. ✖ No es la herramienta más veloz para desarrollar. MS Visual C++ 6.0 ¿Qué lenguaje debo elegir? Un lenguaje ideal para aprender sería aquel que no resultara muy complicado al principio, que en poco tiempo permitiera ver resultados alentadores, que no “quedara chico” luego de adquirir mayor experiencia, que no se encerrara en una rama específica, que tuviera Ideal para aprender y trabajar ¡Yo tengo el poder! MS Visual Basic 6.0 NT_ProgramacionUEx#44.qxd 5/9/01 5:21 PM Page 34 u s e r s . t e c t i m e s . c o m 35 aceptación en el mercado, buena salida laboral y, si fuera posible, que dispusiera de alguna versión para testearlo. Sin lugar a dudas, el lenguaje que cumple mejor con todas estas pautas es Visual Basic. No por nada es uno de los lenguajes más utilizados hoy día, y la existencia de una gran comunidad de programadores en un lenguaje también es un punto a favor, más aún a la hora de aprender. Pero dejando de lado opiniones personales, presentamos una comparación objetiva entre los cuatro lenguajes visuales más populares para crear aplicaciones para Windows. ✔ Orientación a objetos (herencia, polimorfismo, etc.). ✔ Genera ejecutables standalone (sin pesadas librerías). ✔ Muy estricto, lo que lo vuelve apto para el aprendizaje. ✖ El IDE podría ser mucho mejor. ✔ Orientación a objetos. ✔ Muy veloz para el trabajo con bases de datos. ✖ No es un lenguaje de propósito general. ✖ Pobre manejo de gráficos y de multimedia. D elphi es, por decirlo de forma simple y rápida, unaversión moderna y visual del clásico Pascal. Técnica- mente, soporta todas las características avanzadas de orientación a objetos, como herencia y polimorfismo, que, a la hora de compararlo con Visual Basic, representa uno de los principales argumentos. Además, incluye docenas de controles adicionales, y genera ejecutables standalone que, si bien son un poco más voluminosos, no requieren la carga de extensas librerías en memoria. Pero si Delphi es tan bueno... ¿por qué no es más popu- lar? Muchos amantes del lenguaje lo atribuyen a las pobres estrategias de marketing que Borland (actualmente Inpri- se) utiliza para el producto, más aún si se considera que compite con un gigante de los negocios, como Microsoft. Si bien hoy Delphi soporta casi todas las tecnologías ac- tuales en materia de desarrollo, a la hora de criticarlo mu- chos se basan en el miedo de que eso no continúe siendo así; ya que, quiérase o no, en cuanto a desarrollo para Win- dows, el que lleva la batuta es Microsoft. Por ejemplo, MS piensa en lanzar .NET a principios del año que viene... ¿Có- mo afectará eso a Delphi? V FP es la versión visual del antiguo FoxPro, un len-guaje compatible con dBASE utilizado para desarro- llar aplicaciones que manejen bases de datos. Como tal, VFP es un lenguaje que se usa en mayor medida para crear sistemas que funcionen con grandes bases de datos. De hecho, por más que “técnicamente” fuese posible, prácti- camente no existen utilitarios o aplicaciones de uso gene- ral desarrollados en este lenguaje. VFP incluye herramientas especiales para crear bases de datos, tablas, reportes y consultas, y el lenguaje incorpo- ra muchísimas funciones específicas para trabajar en acce- so a datos. Muchas de ellas no tienen un equivalente en otros lenguajes, como Visual Basic. En cierta parte, esto hace que muchas aplicaciones de VFP trabajen mejor y más rápido con grandes bases de datos. Pero, en cuanto a la creación de interfases de usuario amigables y al trabajo con sonidos, gráficos y multimedia, Visual FoxPro deja mucho que desear. El entorno de desa- rrollo (IDE) también podría mejorar bastante. En cuanto a su futuro, actualmente ya está disponible la Beta 2 de Visual FoxPro 7, la próxima versión del lengua- je. Veremos qué trae de nuevo. Delphi 5 MS Visual FoxPro 6.0 El heredero de Pascal Zorro viejo... NT_ProgramacionUEx#44.qxd 5/9/01 5:22 PM Page 35 u s e r s . t e c t i m e s . c o m36 Como mencionamos antes, VisualBasic es el lenguaje ideal paraaprender, y para eso estamos aquí. Pero primero lo primero: ¿dónde se consigue? La última versión de Visual Basic es la 6.0, que comercialmente vie- ne en tres ediciones: Enterprise, Profe- sional y Learning. Obviamente, las tres son pagas, pero existe una alternativa gratuita: Visual Basic 6 Working Model. Es una versión reducida que no permite compilar nuestros programas (crear el ejecutable), pero funciona por tiempo ilimitado, y es muy útil para probar. El entorno de desarrollo Ahora sí, apenas ingresamos en Visual Basic, vemos un diálogo de bienvenida, en el que se nos pregunta qué tipo de proyecto queremos crear. Como noso- tros vamos a comenzar creando aplica- ciones Windows comunes, elegimos “Standard EXE”. Una vez hecho esto, accedemos al área de trabajo de VB, que la Guía Vi- sual de la página siguiente explica bre- vemente. De todo lo que se ve, hay cua- tro elementos principales: • El formulario que estamos diseñan- do, en el centro. • La caja de herramientas, con íconos que nos permiten agregar diferentes objetos al formulario. La Guía Visual de esta página describe brevemente cada ícono de esa barra. • La ventana de propiedades, que sirve para modificar las propiedades de los objetos que están en el formulario (y del mismo formulario en sí). • El Project Explorer, que nos mues- tra los archivos que forman parte de nuestro proyecto y nos permite navegar entre ellos. Con esos elementos podemos ir agre- gando objetos a nuestro formulario prin- cipal, pero... ¿dónde se ingresa el famo- so código? Probemos con un ejemplo sencillo: tomamos un botón de la caja de herramientas y lo “dibujamos” en el formulario. En la ventana de propieda- des, cambiamos su propiedad Name (nombre) a “cmdSalir”, y la propiedad “Caption” a “Salir” (Caption indica el texto que muestra el botón). Luego, ha- cemos doble clic sobre el botón en el formulario. ¡Voilá! Aparecimos en la ventana de código, una especie de edi- tor en el cual podemos ingresar código para programar, en este caso, los even- tos del botón. Pero... ¿qué eventos? En esa ventana de código tenemos dos combos en la parte superior. El izquier- do indica sobre qué objeto estamos es- cribiendo código, y el derecho, el even- to de dicho objeto. Si observamos la fi- gura, veremos que a la izquierda dice “cmdSalir” (el nombre interno de nues- tro botón), y a la derecha, “Click” (el nombre del evento que estamos por programar). Si desplegamos esta última lista, veremos que también hay otros eventos disponibles: DblClick (doble clic), GotFocus (cuando adquiere el fo- co del usuario), LostFocus, etc. Siguiendo con el ejemplo, el funciona- miento que esperamos del botón es bas- El mejor punto de partida para aprender a programar Visual Basic en una clase Los objetos se incrustan en los formularios mediante lacaja de herramientas: Puntero Etiqueta Marco CheckBox ComboBox ScrollBar horizontal Timer DirListBox Shapes Control de imagen OLE PictureBox Caja de texto Botón Botón de opción ListBox ScrollBar vertical DriveListBox FileListBox Línea DataControl NT_ProgramacionUEx#44.qxd 5/9/01 5:22 PM Page 36 tante obvio... queremos salir de la apli- cación. Para eso, podemos hacer uso de la añeja sentencia “End”. Pero antes, para romper con el clásico y aburrido “Hola Mundo”, vamos a agregar un men- saje final, mediante la función MsgBox. El código del botón quedaría así: Private Sub cmdSalir_Click() MsgBox “Adiós mundo cruel...” End End Sub ¡Listo! Para probar cómo queda nues- tra aplicación, pulsamos <F5> o vamos al menú [Run/Execute]. Cuando presio- nemos el botón [Salir], nuestro progra- ma se verá como en la figura. Finalmen- te, si queremos compilar el programa para crear el ejecutable, debemos ir al menú [File/Make Project1.EXE], elegir el nombre del ejecutable y aceptar. Pero antes de que te entusiasmes de- masiado, será mejor que guardes el pro- yecto ([File/Save]); no vaya a ser que justo se corte la luz... En fin, Visual Ba- sic guarda los proyectos en archivos con extensión VBP. Si luego ejecutamos ese archivo desde el explorador, Visual Basic se abrirá con el proyecto cargado. Código en Visual Basic Ahora ya sabemos dónde se ingresa el código en Visual Basic, pero nuestro po- tencial sigue siendo muy limitado, por- que no conocemos el lenguaje: ¡no sa- bemos qué escribir! Para solucionar es- to, vamos a ver pequeños ejemplos prácticos de las instrucciones más im- portantes. Variables y constantes Para decirlo fácilmente, las variables son nombres que almacenan valores, que pueden cambiar. Lo importante es que el nombre de la variable refleje el conteni- do de ésta. Veamos algunos ejemplos: Dim Velocidad As Integer Dim NombreSocio As String Dim DeudaExterna As Long Dim RespuestaCorrecta As Boolean Por el contrario, las constantes se usan para guardar valores que no cam- bian nunca a lo largo del programa. Const Pi = 3.141592 Const Gravedad = -9.8 Luego, la idea es hacer referencia a es- tas constantes, sin repetir varias veces el valor explícito que almacenan. Estructuras de decisión Se usan para decidir cómo sigue el flu- jo del programa, según el resultado de una expresión (que, generalmente, invo- lucra variables o constantes). Ejemplos: Dim RespuestaCorrecta As Boolean [...] If RespuestaCorrecta = True Then MsgBox “¡Muy bien!” Else MsgBox “Incorrecto” End If Mientras que la estructura del IF deci- de si una expresión es verdadera o no, la u s e r s . t e c t i m e s . c o m 37 El área de trabajo de Visual Basic: Barra de Título Barra de Menúes Barra de Herramientas Caja de Herramientas Diseñador de formularios Explorador de proyectos Posición del formulario Ventana de propiedades NT_ProgramacionUEx#44.qxd 5/9/01 5:22 PM Page 37 estructura Select Case puede optar en- tre varios valores: Dim Equipo As String [...] Select Case Equipo Case “Boca” MsgBox “Xeneizes” Case “River” MsgBox “Millonarios” Case Else MsgBox “Equipo desconocido” End Select Basándose en el valor de la variable Equipo, el programa muestra un mensaje. Bucle For-Next Es una estructura que se usa para repe- tir la ejecución de un bloque de instruc- ciones una cantidad exacta de veces. Vamos al ejemplo: Dim i As Integer For i = 1 to 10 MsgBox i Next i Nos muestra los números del 1 al 10. A medida que el ciclo se repite, aumenta en uno el valor de la variable “i”. Obvia- mente, se puede elegir cualquier varia- ble numérica para controlar el bucle. Bucle Do-Loop Se usa para ejecutar un bloque de ins- trucciones hasta (Until) o mientras (Whi- le) se cumpla cierta condición. Do [...] Loop Until condicion La palabra clave “Until” se puede reemplazar por “While” para obtener el otro comportamiento. Además, la con- dición también se puede situar luego de “Do”. Funciones del lenguaje Como todo lenguaje, Visual Basic viene con un pack de funciones útiles para ayudar al programador. Hay algunas pa- ra el tratamiento de cadenas de caracte- res (strings), funciones matemáticas, pa- ra manejar fechas y horas, dar formato a expresiones, y mucho más. Por ejemplo: Dim Longitud As Integer Dim Nombre As String Nombre = “Programación” Longitud = Len(Nombre) Aquí, la longitud del texto contenido en la variable Nombre guardada en la variable numérica Longitud, mediante el uso de la función Len. Esta función recibe como único parámetro el texto cuya longitud se quiere averiguar, pero otras funciones pueden recibir más pará- metros (valores o variables de entrada). Algunas funciones útiles Cortitas y al pie, vamos a ver algunas funciones útiles que nos pueden ayudar. Tené en cuenta que, para hacerlo breve, no están incluidas en un ejemplo, pero, como todas son funciones, devuelven un valor para utilizar a gusto (almacenarlo en otra variable, imprimirlo, mostrarlo en un mensaje, etc.). Dicho sea de paso, en Visual Basic todo texto seguido de un apóstrofo (’) es un comentario, y se ig- nora. Ahí van: ‘Devuelve el largo de la cadena, o sea 5 Len(“USERS”) ‘Devuelve la cadena “FOREST GUMP” UCase(“forest gump”) ‘Devuelve los 4 primeros caracteres (“Boca”) Left(“Boca Juniors”, 4) ‘Reemplaza el primero por el segundo... Replace(“Pipi”, “i”, “o”) ‘Un mensaje con pregunta If MsgBox(“¿Le ponés queso a los fideos?, vbYesNo) = vbYes Then MsgBox “Yo también.” Else MsgBox “¡Sacrilegio!” End If ‘Para ingresar un dato Nombre = InputBox(“¿Cómo te llamás?”) En el combo de la izquierda hay que indicar el objeto deseado, y en el de la derecha, elegir el evento que se quiere programar. En la lista izquierda también existe la sección especial [Declarations], para declarar variables y acceder a otros procedimientos en la lista de la derecha. Tipos de datos en Visual Basic Éstos son los tipos de variables más comunes en Visual Basic. Hay más, pero inicialmente, con éstos es suficiente. Tipo Descripción Byte Numérico, valores desde 0 hasta 255. Bolean Sólo puede contener Verdadero o Falso (True o False). Integer Enteros, de –32.768 a 32.767. Long Enteros largos, de – 2.147.483.648 a 2.147.483.647. Single Números en coma flotante, precisión simple. Double Números en coma flotante, doble precisión. String Almacena cadenas de caracteres. Date Almacena fechas. u s e r s . t e c t i m e s . c o m38 NT_ProgramacionUEx#44.qxd 5/9/01 5:22 PM Page 38 da a derecha. Acordate de que todas tie- nen el mismo Name, pero se diferencian por su Index (que comienza en 0). A codificar Lo primero que debemos codificar es qué pasa cuando el programa arranca. Si hacemos doble clic sobre cualquier sec- tor libre del form, accedemos a la ven- tana de código en el evento Load. Este evento se dispara al cargar el form, que, como es el único, indica el comienzo de la aplicación. El código es: Private Sub Form_Load() lblLetrasJugadas = “” lblBienvenida = “¡Bienvenido!” End Sub Lo siguiente es declarar dos variables que vamos a necesitar globalmente: Pa- labra (la palabra ingresada) y Errores (el contador de desaciertos). Para eso, en la ventana de código vamos a la sec- ción [General] (a la izquierda) y [De- clarations] (a la derecha), y escribi- mos: Dim Palabra As String Dim Errores As Byte Lo próximo es programar qué pasa cuando el usuario cliquea en [Nuevo]. Para eso, buscamos el objeto “cmdNue- vo”, y en el evento Click ingresamos: probó, para que no se olvide. Es la que muestra las letras “GEOM”. • El recuadro que encierra el área de juego es un marco (fraJuego). • Dentro del recuadro, hay un control de imagen (imgHorca), que usaremos para mostrar el jugador a medida que va perdiendo. • Finalmente, hay dos botones: Nuevo (cmdNuevo) y Salir (cmdSalir). Ahora bien, seguramente habrás notado que no dijimos qué eran las letras que for- man la palabra en juego. Son etiquetas, pero con una cualidad especial: forman un arreglo de objetos. ¿Qué es eso? En lugar de crear varias etiquetas por separadocon un nombre distinto cada una, creamos un solo arreglo de etiquetas, con un único nombre, e identificamos a cada una me- diante un subíndice (propiedad Index de cada una). ¿Cómo se crea? Paso a paso: • Tiramos la primera etiqueta dentro del marco. La llamamos lblLetras y po- nemos su propiedad Caption en un guión bajo (“_”). • Hacemos Copy-Paste de esa etique- ta, siempre dentro del marco. • Entonces, VB nos advierte que tene- mos otro control con el mismo nombre (el que ya existe), y nos pregunta si que- remos cambiarle el nombre o crear un arreglo. En nuestro caso, creamos el arreglo eligiendo [Yes]. A medida que vamos pegando etiquetas, las vamos ubicando en orden, de izquier- La idea es hacer un pequeñojuego del tipo Ahorcado, yaque todos sabemos las reglas y la lógica es bastante simple. Antes de comenzar, sería bueno que tomes el ejemplo terminado del CD y lo pruebes, para ver cómo funciona. El formulario Abrimos VB, creamos un proyecto, y ya estamos listos para empezar. Antes de comenzar a tirar objetos en el form prin- cipal, trabajamos con sus propiedades: • Vamos a la ventana de propiedades, y cambiamos la propiedad Name de form1 a frmAhorcado. • Después, cambiamos el título de la ventana modificando la propiedad Cap- tion (por ejemplo, “Ahorcado v1.0”). Ahora bien, la próxima propiedad que nos interesa es BorderStyle. Ésta se utiliza para definir el tipo de borde que tiene la ventana. Hay bordes fijos (Fi- xed), bordes que permiten el cambio de tamaño (Sizeable), y otros para crear diálogos o cajas de herramientas. Como nosotros vamos a tener un borde fijo, cambiamos la propiedad Border a “1 – Fixed Single” (esto impedirá que el usuario ajuste el tamaño del form). Ha- brás notado que, al hacer esto, el botón de minimizar desapareció de la barra de títulos. Para volver a colocarlo, basta con cambiar la propiedad MinButton de False a True. Otras que usamos en este form fueron StartUpPosition e Icon, pero dejamos que las descubras solo. Los objetos del formulario La figura de arriba muestra el form en tiempo de diseño, y la figura de abajo, el ejemplo terminado. Ahí se ven los controles que vamos a ubicar, que son: • Una etiqueta (lblBienvenida), para el mensaje de bienvenida. El texto entre paréntesis indica el nombre (propiedad Name) del objeto. • Otra etiqueta (lblLetrasJugadas), que indica las letras que el jugador ya El Ahorcado en tiempo de diseño, en el IDE de Visual Basic. El Ahorcado v1.0 terminado, y en ejecución. La palabra es bastante fácil... aunque parece que nuestro amigo está a punto de ser colgado. u s e r s . t e c t i m e s . c o m40 El clásico Ahorcado en versión digital Mi primer programa NT_ProgramacionUEx#44.qxd 5/9/01 5:22 PM Page 40 u s e r s . t e c t i m e s . c o m 41 Private Sub cmdNuevo_Click() NuevoJuego End Sub ¿Qué es NuevoJuego? Es un procedi- miento, una subrutina. Al escribir su nombre la estamos invocando, y comien- za a ejecutarse. Para crear el procedi- miento, basta con situarse debajo del “End Sub” que acabamos de ver, y tipear “Sub NuevoJuego”, seguido de <EN- TER>. El código de este procedimiento se ve en la Sección 1 del listado de código. Bá- sicamente, lo que hace es mostrar un diá- logo para que se ingrese una palabra (In- putBox), convertirla a mayúsculas (UCa- se), guardarla en la variable Palabra, ini- cializar el estado de algunos controles y otras variables. Finalmente, invoca a otro procedimiento llamado CargarPalabra (Sección 2). Éste oculta todas las etique- tas de letras (el ciclo For va de 0 a lblLe- tras.Ubound, que es el último subíndice del arreglo de etiquetas), y luego toma la palabra cargada (variable Palabra) y muestra los guiones necesarios; además, guarda en la propiedad Tag de cada eti- queta la letra real que contiene. Finalmente, sólo resta ver qué pasa cuando el usuario tipea las letras. Para que nuestro form reciba eventos de te- clado, es necesario establecer su propie- dad KeyPreview en True. Ahora, lo que nos interesa es el evento KeyPress del form, que se dispara cuando el usuario pulsa una tecla. El código del evento es: Private Sub Form_KeyPress(KeyAscii As Integer) JugarLetra UCase(Chr(KeyAscii)) End Sub Este evento recibe como parámetro el código ASCII de la letra. Lo convertimos a un carácter (Chr) y a mayúsculas (UCa- se), y se lo pasamos como parámetro al procedimiento JugarLetra. La Sección 3 muestra el código de es- te procedimiento. Es el más complejo, ya que debe fijarse si la letra está en la pa- labra (InStr), mostrar las letras en las etiquetas (comparando la letra ingresada con la propiedad Tag de cada etiqueta), actualizar la imagen (propiedad Picture de imgHorca), y determinar si acaba de ganar o perder. 1 2 3 Sub CargarPalabra() Dim i As Integer For i = 0 To lblLetras.UBound lblLetras(i).Visible = False Next i For i = 1 To Len(Palabra) lblLetras(i - 1).Tag = Mid(Palabra, i, 1) lblLetras(i - 1).Caption = “_” lblLetras(i - 1).Visible = True Next i End Sub Sub JugarLetra(Letra As String) Dim Termino As Boolean Dim i As Integer If InStr(Palabra, Letra) <> 0 Then Termino = True For i = 1 To Len(Palabra) If lblLetras(i - 1).Tag = Letra Then lblLetras(i - 1).Caption = Letra End If If lblLetras(i - 1).Caption = “_” Then Termino = False End If Next i Else Errores = Errores + 1 lblLetrasJugadas = lblLetrasJugadas & Letra imgHorca.Picture = LoadPicture(App.Path & _ “\horca” & Errores & “.bmp”) End If If Errores = 6 Then MsgBox “¡Ganaste!” NuevoJuego End If If Termino Then MsgBox “¡Perdiste!” NuevoJuego End If End Sub Sub NuevoJuego() Palabra = InputBox(“Ingrese su palabra (15 letras máx):”) Palabra = UCase(Palabra) imgHorca.Picture = LoadPicture(“”) lblLetrasJugadas = “” Errores = 0 CargarPalabra End Sub NT_ProgramacionUEx#44.qxd 5/9/01 5:22 PM Page 41 u s e r s . t e c t i m e s . c o m42 Cuando hablo con gente que quiere aprender a progra-mar, siempre me hace la misma pregunta: “¿Qué pro-grama puedo hacer?”. Ya eligieron un lenguaje y es- tán decididos a aprender, pero no saben qué proyecto encarar. Eso sí que es un problema, porque la mejor forma de aprender, muchos dirán lo mismo, es pegando el traste en la silla y per- siguiendo un objetivo concreto. Tenés que pensar para vos: “Quiero hacer un programa que haga tal y cual cosa, y hasta que no lo saque, no me levanto de la silla”. Por ejemplo, supongamos que el objetivo es una agenda con recordatorios. A la semana de haberla empezado, resulta que no sabemos cómo hacer que el recordatorio nos avise con un sonido de alarma... “Bah... mejor lo dejamos así, sin alarma so- nora”. ¡No! Ése es el gran error. Hay que investigar, buscar y probar hasta que salgan las cosas. Así, luego de haber termi- nado el programa, podrás decir: “Con este programa aprendí a hacer esto y aquello”. Un buen primer proyecto sería, justamente, un programa que permita recordar fechas, cumpleaños, aniversarios, películas buenas que dan en cable (si es que todavía podemos encon- trar alguna...), etc. Sería bueno hacerlo con una base de da- tos Access, y que se instale de forma tal que al iniciar Win- dows avise si hay algo para estos días... ¿Más ideas? Un me- motest, una agenda que use bases de datos, una tragamone- das, un programa para seguir fixtures de fútbol o los campeo- natos, un tamagochi criollo, un cronómetro con alarmas, un juego de preguntas y respuestas, una aplicación que enseñe visualmente las normas de tránsito, un mastermind, etcétera. Entonces, bien, ya empezaste el proyecto, y todo está encaminado. Pero cuando las cosas no salen... ¿a dónde recurrir por información? Yo tengo mucha preferencia por el método autodidacta: comprarse un buen libro y buscar información en Internet. De esa manera, uno adquiere un entrenamiento fabulo- so para resolver nuevos problemas en el futuro. Cuando algo no sale, recorre los sitios de su lista de favoritos y, en diez minutos, problema resuelto. En el otro extremo están los que prefieren los cur- sos. No digo que sea una mala idea, por el contrario, en muchoscasos funciona, pero la realidad es que, al margen de que haya muchos chantas dando vueltas, hacer cursos sale más caro y no fomenta el espíritu curioso digno de un programador, que bien podría aprovechar esas horas buscando tips, trucos, tutoria- les, ejemplos, fuentes y más chiches en la Red. Tal vez los cursos convengan más adelante, cuando el progra- mador está formado pero necesita especializarse en un tema en particular, sobre el cual no hay mucha in- formación disponible, o cuando el tiempo apremia. Finalmente, como sucede con el estudio, un buen consejo es tratar de formar un grupo de aprendiza- je. Hay que juntarse con un par de amigos que es- tén en la misma, y empezar a practicar. Después, se gana mucho al compartir lo que se va aprendiendo, y, a su vez, las dudas de uno las puede contestar el otro, y viceversa. ✕ DIEZ CONSEJOS ÚTILES 1 Elegir un lenguaje apto para aprender, como Visual Basic o Delp-hi. Dejar los lenguajes avanzados, como C, para más adelante. 2 Es conveniente comenzar con un proyecto simple, factible y con unobjetivo concreto. 3 No dejar los programas a medio hacer. Es preferible recortar fun-cionalidad, pero cumplir el ciclo y terminar el programa. 4 Juntarse con amigos o compañeros que estén en la misma situa-ción, y formar un grupo de estudio para aprender entre todos. 5 No quedarnos sentados esperando a que un curso nos dé los con-ceptos masticados y servidos en bandeja de plata. 6 Aprender por la vía autodidacta. En Internet hay una parva de in-formación, y los libros también son una excelente opción. 7 Encontrar dos o tres buenos sitios del lenguaje elegido y suscribir-se a sus newsletters, para estar siempre actualizado. 8 Ser modesto. En una comunidad de programadores, más vale pasarpor tonto y aprender, que aparentar mucho y decir pavadas. 9 Buscar un buen foro de discusión en la Web. “El que no sabe y pre-gunta, pasa vergüenza una vez. El que no sabe y no pregunta, pasa vergüenza siempre” (proverbio). 10Compartir información. Así como es interesante ver código de otroprogramador, es muy bueno no ser egoísta y compartir el nuestro. El sitio de la MSDN cuenta con toda la documentación de referencia, newsgroups, artículos, código e información de los lenguajes de programación de Microsoft. Encontralo en msdn.Microsoft.com. Cómo aprender NT_ProgramacionUEx#44.qxd 5/9/01 5:22 PM Page 42
Compartir