26 septiembre 2007

Karel anda buscando a Hansel y Gretel

Como podrás recordar la vieja historia clásica de Hansel y Gretel (y si no lo conoces lo puedes leer aquí), estos niños dejaron un rastro de piedras para saber cómo regresar de la casa de la bruja malvada.

Hansel y Gretel ahora se han perdido en el mundo virtual y, como han tardado mucho, el pobre leñador virtual le pidió a Karel, el héroe de la historia, que encuentre a los niños. Para esto, tendrá que seguir un rastro de Zumbadores que han dejado los chiquillos.

Tu misión es hacer un programa que le permita a Karel seguir un rastro marcado por zumbadores. Este es una imagen de un mundo donde debe funcionar tu algoritmo, pero recuerda que debe de ser capaz de funcionar para cualquier mundo.


Este es una solución que se me ocurrió a mi (ya no lo acabé, pero ya veo varias cosas que pueden mejorar) que a lo mejor te sirve. Podríamos usar funciones (cosa que espero escribir más adelante), recursión, etc. Le agregué comentarios al código para que sea más fácil de entender lo que estoy haciendo. Los comentarios se encierran entre paréntesis con asteriscos, ejemplo: (* este es un comentario *).



¡Que se diviertan!

25 septiembre 2007

¿Cómo le hago para conectar mi videochunche a mi compu?

Una pregunta que nos sucede a todos (bueno a todos los que nos interesa la computadora y tenemos obsesió0n por conectar todo lo que se pueda a ella) los que compramos una videocámara digital es ¿cómo le hago para conectarlo a mi compu?

Aunque es una pregunta sencilla, la respuesta depende de muchas cosas. En primer lugar, ¿qué tipo de videochunche tengo? En este caso, estoy suponiendo que tienes una videocámara digital que usa MiniDV o algo por el estilo. Aunque hay diferentes maneras de conectar otros aparatos de video (como tu videocasetera VHS, la señal de la tele, etc.) en este mensaje sólo me voy a concentrar en este tipo. Si quieres copiar desde la VHS, una videocámara más viejita (tipo Hi8, también conocido como Digital8, u otras) o la TV, necesitas una tarjeta que te permita conectar la señal directamente a la compu. Las llaman Tarjetas de TV o algo por el estilo y aquí puedes encontrar una página que te muestra cómo instalarlo y toda la onda.

Las videocámaras digitales generalmente se comunican con la compu por medio de un puerto Firewire (conocido también como IEEE-1394). Si ya tienes una cámara de este tipo, necesitas otro par de cosas. Tu computadora necesita, si no lo tiene ya, una tarjeta que te permita conectarle un cable Firewire. Abajo pongo un par de imágenes para que te des una idea de cómo son:
Esta tarjeta tiene dos puertos FireWire (se pueden conectar 2 cables al mismo tiempo) y un USB


Esta ofrece dos FireWire y dos USB


Esta es una para "lactoc" (lactoc = laptop de un mexicano, jeje)


Lo siguiente que necesitas es un cable. Este es fácil de conseguir y en la mayor parte de las veces viene "gratis" si compras una tarjeta FireWire (quesque gratis porque con lo que te cuesta la tarjeta ya te lo cobraron). El cable que necesitas tiene dos puntas que son diferentes, como puedes observar en esta imagen:


Una vez con la tarjeta instalada y el cable, se conectan a la cámara y a la compu como lo muestra la siguiente imagen:


Entonces prendes la cámara de video y Windows XP lo reconoce en automático (si no lo reconoce, seguramente tu cámara viene con un CD de drivers para instalarlos) y aparece una ventanita en la pantalla preguntándote con qué programa quieres capturar el video. Allí puedes elegir Windows MovieMaker, Adobe Premiere o lo que tengas instalado. El procedimiento para cada uno es un poco diferente y te tocará estudiar un poco. En un futuro no muy lejano, pienso subir material para capturar y hacer la postproducción de un video usando Movie Maker, tal vez en un futuro en Premiere y luego quien sabe.

¡Que te diviertas!

24 septiembre 2007

¿Necesitas un control común?

Muchas veces en la vida del programador de Visual Basic 6, hay la necesidad de pedir datos al usuario. Por ejemplo, cajas que te permitan abrir un archivo, imprimir algo, elegir tipo de letra o cambiar un color. Podrías hacer tus propias ventanitas (como hemos hecho muchos), sin embargo algunas personas consideradas de Microsoft agregaron una onda que se llama CommonDialog que te permite hacer este tipo de monerías.
Ahorita voy a hacer un simple ejemplo que, antes de abrir una ventana, abre una caja de diálogo que te pida un color. Después de esto, asigna ese color a la ventana principal.
Antes que nada, creo un nuevo proyecto. El Common Dialog no es un control "estándar" de Visual Basic 6, así que hay que agregar el componente. Para esto me voy al menú Project y elijo la opción de Components, como ves en la siguiente figura:


Al elegir esta opción, aparece la siguiente ventana:


Esta ventana te permite agregar nuevos componentes a tu proyecto (o sea, otros controles). "Tacha" la cajita que está a un lado del componente Microsoft Common Dialog Control 6.0 y aprienta el botón Aceptar. En este momento se agrega un nuevo control en la barra de herramientas que se ve así:


Entonces, selecciona este control y dibújalo en la ventana Form1 (o como le hayas puesto). Aparece en la ventana, sin embargo a la hora de ejecutar el programa, permanece invisible. Mi ventana se ve así:


Ahora voy a programar el Form1_Load para que aparezca la caja que va a pedir el color. El código se ve así:


¡Listo! Para ver sintaxis y ejemplos de como usar este control para abrir archivos, imprimir, cambiar tipo de letra, etc. te recomiendo estas dos páginas: Wikilearning y del MSDN Library. ¡Hasta la próxima!

Concurso de programación en la Univa

Estimados alumnos de prepa, nos han extendido la invitación de participar en un concurso de programación. Parece estar interesante.

Si estás interesado, puedes ver la convocatoria aquí y avísenme para estar al tanto.

¡Saludos!

23 septiembre 2007

Cablecitos y cablesotes... ¿cómo le hago?

Después de haber pensado largo y tendido acerca de la manera en que voy a conectar mi red, hay que pensar en los cables. Como dije en el mensaje anterior, lo primero es planear. Pero acabando eso, hay que comenzar a hacer cables.

Para no redundar en explicaciones repetidas que ya existen en el internet, encontré este sitio que se me hace una referencia excelente. Tiene dibujitos paso a paso para que veas cómo se hace. Fíjate y lo verás.

¡Seguimos en contacto!

¿Crees que estás listo para instalar una red?

¿Qué es lo primero que se te ocurre cuando piensas en instalar una red? ¿Hacer cables? ¿Conectar tarjetas de red en las computadoras? ¿Precios de Hubs (o concentradores), access points, cable UTP, conectores RJ-45 y otros cybertiliches que sirven para conectar una red?

Antes de empezar con todo esto, quiero darte una palabra de sabiduría. En la Biblia, en el libro de los Proverbios, hay todo tipo de palabras sabias para jóvenes como nosotros (conste que todavía me considero joven apenas a mis 34 primaveras). Al autor de este libro (que dicen que fue el rey Salomón) se le ocurrió dar un buen consejo para todos aquellos que piensan instalar una red: Cuando no hay consulta, los planes fracasan; el éxito depende de los muchos consejeros (Prov. 15,22). ¿Qué quiere decir esto? Que es importante planear, pensar e incluso preguntar a otros si es necesario, antes de implementar una red.

Aunque hay muchos que les encantaría quedarse con tu dinero y decirte cómo instalarlo, mejor te ahorras una lana y lo planeas tu solo (o si quieres darme una lana a mi por haberte dado este consejo, con humildad aceptaré tu dinero, jeje). No tiene gran ciencia, pero es importante que no te apresures en la planeación (porque los errores cue$tan), escribas el plan de la red (algo muy breve) y le pidas a alguien que lea el plan de red que hiciste, especialmente alguien que sepa de redes (estos son los consejeros que menciona Proverbios).

Una vez que tienes en cuenta esto, tienes que conseguir la información acerca de los nodos que estarán conectados a la red. En una red pequeña, por lo general, todos los nodos son computadoras, así que tienes que anotar en algún lado, el procesador que tiene (y su velocidad, de preferencia), el tamaño del disco duro (y su espacio libre), la cantidad de memoria (RAM), el sistema operativo (y versión), tipo de impresora conectada a la compu (si es que hay), el software que usan las máquinas y cualquier otro dispositivo conectado a la compu.

¿Para qué recolectar toda esta información? Puede ser un pasatiempo interesante para algunos (de los cuales yo NO me incluyo en ese grupo), pero la utilidad es para saber qué tipo de software va a necesitar, en caso que tenga impresora u otros aparatejos, saber cuales se van a compartir, qué máquina conviene que sea el servidor (si es que van a dejar una como servidor), etc.

Hoy en día, lo más seguro es que vas a usar cable UTP (conocido como RJ-45 por algunos) Categoría 5 para conectar muchos aparatos. Recuerda que aunque tu red sea inalámbrica, en algún lado se necesitan cables. Como ya contemplaste en tu plan, fíjate por dónde quieres que pase el cable. Si va a cruzar sobre el suelo, consíguete unas ondas que cubren el cable para que la gente no se tropiece ni lo desconecte (como estos), si va a ir sobre una pared, usa canaleta (que es como una cajita larga donde el cable va adentro, fíjate en ésta página donde venden) o, si eres de mejor toque artístico y poca lana, usa grapas (aunque se ve bastante mal). Si vas a hacer un hoyo por una pared, hazlo un poco más grande del diámetro de el (los) cable(s) que vas a pasar por el agujero. O sea, puras cosas de sentido común.

Hasta este momento, no se me ocurren otras cosas por hacer. En el siguiente mensaje, voy a hablar acerca de la manera en que se hacen los cables. ¡Hasta la próxima!

19 septiembre 2007

Creando menús con Visual Basic 6.0

Una de las características de los programas actuales es el uso de menús. Desde tiempos remotos, cuando todavía las computadoras no tenían gráficos y la única manera de interactuar con ellas era con un menú. Al principio, eran bastante simples. Imagínate que solo podías usar letras verdes, naranjas o blancas sobre un fondo negro... en fin, eran otros tiempos...

Pero ahora, con nuestro mundo visual con iconitos, botoncitos, mouse y toda la onda, todavía son muy útiles los menús. Solo que ahora han evolucionado mucho y son más agradables. En este mensaje quiero platicarles un poco sobre mi experiencia con menús en Visual Basic 6.0. Para ello, voy a hacer una aplicación muy sencilla, que solo muestre como funciona esto de los menús.

Voy a comenzar con un proyecto nuevo. Solo para evitar el aburrimiento, establezco la propiedad Caption a "Ejemplos de menús". Luego, para crear un menú, presiono el botón del editor de menús. Abajo viene una imagen de la barra de menús de Visual Basic 6.0.


Al presionar el botón del editor de menú, sale la siguiente ventana:


Desgraciadamente, en el Visual Basic 6 se edita el menú aparte de la ventana princioal, o sea que a diferencia de otros controles que dibujas directamente sobre la ventana (o forma), aquí lo creas en otro lado y esperas que se vea chiroliro. Para dibujar un menú directamente sobre la ventana, tendrán que usar el Visual Basic .Net o el 2005.

Pese a lo no-tan-visual de la cosa esta, funciona bastante bien y de manera muy sencilla. Ahora, por mantener la cosa sencillita, voy a hacer un pequeño menú y lo voy a ir ilustrando parte por parte.

Para empezar, el primer elemento en la barra de menú de esta aplicación va a tener un elemento llamado "Mensajes". Para hacer esto, lleno la ventana como indica la figura:


Una nota cultural: pongo el símbolo & adelante de la letra M de Mensajes para que aparezca subrayado y responda cuando el usuario presione ALT+M. Si cierro esta ventana, mi forma Form1 se ve así:


Pero que pasa si quiero poner un menú adentro de mi menú "Mensajes". Vuelvo a abrir el editor de menús, aprieto el botón Next para agregar otro elemento abajo del que ya existe. Lo dejo con estos datos:


Para indentar la opción Hola, presiono el botoncito que indenta (flecha a la derecha). Después que tengo todo hecho y cierro el editor de menú, se ve mi forma así.


Al darle click sobre la palabra "Hola", me aparece la ventana de código listo para programar lo que sucederá cuando nuestro usuario valiente se atreva a seleccionar ese botón:


Voy a teclear código super sencillo que solo haga que aparezca una cajita que diga Hola, se ve así:


¡Listo! Ahora voy a poner más opciones a nuestro menú para poder programarlo chido. El editor de menús se ve así.


Ahora programo todas mis opciones y quedaría algo así:


¡Listo! Tenemos un programa sencillo que funciona con un menú padre. ¡Nos vemos!

17 septiembre 2007

Tipo de letra con Visual Basic 2005

Como habrán notado, hay muchas diferencias en la programación con Visual Basic 6 y el 2005. Uno de estos detalles es la manera de cambiar el tipo de letra de algún control.

Mientras que en Visual Basic 6, escribiría esto:

Label1.FontBold = True

(suponiendo que tienes un control en la forma, llamado Label1), en el 2005 escribirías esto:

Label1.Font = New System.Drawing.Font(Label1.Font, FontStyle.Bold Or FontStyle.Italic)

Si quieres mayores informes sobre este rollo, visita esta liga: http://msdn2.microsoft.com/en-us/library/3essdeyy(VS.80).aspx.

13 septiembre 2007

Otros ejemplos del uso de Karel

Este es otro ejemplo resuelto, muy sencillito, para seguir agarrando la onda acerca de cómo se mueve Karel.
En esta ocasión nuestro héroe (Karel, el robot chiroliro) se encuentra encerrado en un salón, la cual solamente tiene una salida. Después de un buen rato, Karel se aburrió y quiso salir. La misión, si la aceptas, es de crear un algoritmo que resuelva este problema. Si no aceptas el reto, puedes bajar un mundo y el algoritmo aquí.

Para otro ejemplo resuelto más, les planteé el siguiente problema a un grupo de alumnos:

Hace mucho tiempo en un lejano mundo virtual, vivía Karel, un amigable robot aventurero. Pese a que era muy amigable, tenía enemigos. En una ocasión, Sock, el mago villano más tremebundo y maloliente de la virtualidad, encerró a Karel en un laberinto. Los laberintos están conformadas por paredes a los lados que solo conducen en un solo sentido y tienen solamente una entrada y una salida. A la salida, hay un zumbador que le recuerda a Karel que su misión ha terminado. El reto es, si lo aceptas (y no te queda de otra, sino repruebas el parcial), es hacer un programa que salve a Karel de las garras de este tipejo, que le permita escapar del laberinto.

Les sugerí 3 mundos para que lo probaran (aunque se supone que un algoritmo debe poder funcionar en cualquier lado) y estas son algunas ideas que me entregaron en el 3er semestre de los técnicos en informática administrativa del bachillerato. Aunque funcionan, todos son sujetos a mejoras. ¿Puedes optimizarlos?

Este lo entregaron Alfredo y Augusto Octavio:

Esta es la solución de Andrea y Julio. Funciona para casi todos los laberintos, pero creo que en laberintos muy complicados tal vez no funcione. ¿Qué crees tu?
Mariana 1 y Claudia aprovecharon el hecho de que hay un zumbador al final del laberinto para escribir esto:

Si estás interesado en resolver más problemas, encontrar nuevos retos, descubrir nuevos horizontes, y otras cosas por el estilo, te recomiendo que visites esta liga: http://cbtis122.net/omi/karel/problemas.php. Son puros problemas en espera de tu solución.

¡Que te diviertas!

06 septiembre 2007

Karel, el robot misterioso...

Al leer este título tal vez te estés preguntando ¿qué #$!¡@ es Karel? ¿Por qué es interesante conocerlo? Espera un segundo, y lo verás (espero :S).

Karel el robot es un lenguaje de programación que no tiene ningún fin práctico, es decir, no voy a usar Karel para hacer un sistema de bases de datos para una empresa, ni nada de ese estilo. Sin embargo es un simulador de un robot que usa instrucciones muy sencillas y bien estructuradas que lo hacen muy útil para agarrar la onda acerca de la programadera. Yo lo he visto útil para desarrollar la lógica necesaria para resolver problemas con la computadora.

Karel es un robot que vive en su propio mundo (bueno, también conozco a muchas personas que también viven en su propio mundo, pero no voy a platicar de eso hoy...). En este mundo virtual solamente existen los siguientes elementos:
  • Calles (horizontales) y avenidas (verticales) que cruzan en esquinas.
  • Paredes impenetrables que se pueden colocar entre dos esquinas.
  • Zumbadores. No sé realmente lo que son, pero son objetos que se colocan en las esquinas para que Karel los recoge y los guarde en su mochila. Siendo creativos, puedes usarlos para hacer sumas, restas, etc.
  • Karel, el héroe de la historia. Este supuesto robot (que realmente es una flecha pichurrienta, jeje) carga una mochila del tamaño del mundo entero donde puede almacenar todos los zumbadores que quiera. Siempre se encuentra orientada hacia una de cuatro direcciones (norte, sur, este u oeste, como lo dice una de las canciones favoritas de mi hija que está aquí). Consta de 3 sensores que le permita ver si hay pared o zumbador a su izquierda, derecha o al frente.

La única manera de comunicarse con Karel es por medio de un programa escrito en algo muy similar al español estructurado, por lo que es muy sencillo.

El programa lo puedes descargar aquí. Va a bajar una carpeta comprimida (formato ZIP) con todos los archivos que necesitas. No existe programa de instalación, así que ni te apures. Descomprime la carpeta en tu disco duro y haz un acceso directo del archivo Karel.exe a tu escritorio o menú inicio o donde quieras.

Karel tiene 3 "ambientes" principales:
  • El mundo virtual: es donde puedes posicionar a Karel, colocar zumbadores, poner o quitar paredes, etc. Puedes guardar estos "mundos" en formato MDO para usarlos luego.
  • El ambiente de programación: aquí es donde escribes tu programa usando las instrucciones entendidas por nuestro amigo el robot. Aquí también es donde puedes guardar tu programa (en formato de texto normalazo) y compilarlo. Eso es importante: si no compilas tu programa, no puedes ejecutarlo. Compilar quiere decir que traduce tu código fuente (o sea tu programa escrito en Karel) a un código que entiende la computadora. Al hacer esto también verifica que no tengas errores de sintáxis (o sea, que no te falte un punto y coma, que no hayas escrito avansa en lugar de avanza, etc.) pero no hace nada acerca de errores lógicos (los errores lógicos son los que se dan cuando haces un programa bien escrito que no resuelve el problema que debería resolver).
  • El lugar de ejecución: no, no es aquí donde ejecutan a Karel (estamos en contra de la violencia, jeje), sino que es el lugar donde se ejecuta tu programa en Karel. Está padre porque de un lado ves el código que escribiste y a la derecha está el mundo con Karel. Mientras se ejecuta el programa, se ve una barra que se posa sobre las instrucciones y al mismo tiempo el robot hace lo que allí dice.
Estas son imágenes de estos tres ambientes chiroliros de Karel:

El mundo de Karel como inicia el programa (o sea, sin nada)

El ambiente de programación sin nada


El ambiente de ejecución sin nada

No es mi intención escribir una referencia completa de las instrucciones de Karel porque viene en la ayuda del programa, pero iré poniendo algunos ejemplos para que vayamos agarrando la onda.

El primer programa que voy a mostrar es muy sencillo. Al inicio del programa oriento a Karel hacia el este y quiero que avance hasta toparse con una pared. A su paso quiero que recoja todos los zumbadores que haya en su camino. Con esto quiero mostrar como se usa el ciclo MIENTRAS (o While). Una vez que tope con pared, voy a girarlo hacia la izquierda y que avance 5 esquinas (para mostrar como funcionan los ciclos Repetir o Para [repeat]) recojiendo todos los zumbadores que me encuentre. Una vez que termine, giro a la derecha, avanzo una esquina y dejo todos los zumbadores que llevo cargando.

Este es un mundo que hice como ejemplo. Algo que es muy importante: nunca debes diseñar tu solución en Karel que sea dependiente del mundo que tienes creado. El programa es independiente del mundo y si pongo un mundo diferente al que creaste, debe seguir funcionando. Pero como es el primer programa, supongamos que así está la onda:


Este es el programita que hice. Fíjate que en los ciclos que llevan más de una instrucción, por ejemplo en primero que avanza mientras frente-libre hacer, les ponemos un inicio y fin para delimitar las instrucciones que, en este caso, es otro ciclo mientras anidado (o sea un ciclo en otro ciclo), el mientras junto-a-zumbador hacer, y el avanza.


Aquí pongo un video para que veas como se ejecuta el programa.

Seguimos en contacto. Luego les iré dejando más material, ejercicios, problemas y otros asuntos enigmáticos y paradisiacos. ¡Hasta la próxima!



02 septiembre 2007

Interfaz de Dreamweaver 8

Usar cualquier software es fácil si conoces donde picarle pa' que jale. Por esta razón, hice este pequeño (muy pequeño) video que muestra los diferentes elementos que componen la interfaz de Dreamweaver 8.

Si no pueden ver el video, hagan click aquí. Luego iré haciendo más material. ¡Hasta la próxima!


El Tony y sus ondas...

Related Posts Plugin for WordPress, Blogger...