19 febrero 2009

Otro compilador de C gratuito

Hace unos días les escribí un mensaje recomendándoles un compilador de C/C++ que ahora es gratuito y funciona muy bien, sin embargo ahora estuve experimentando con la versión en Windows y me gustó más.
El compilador es el Borland C++ versión 5.5 y lo puedes descargar aquí (tienes que darte de alta para que te dejen descargarlo, pero es gratuito).
¡Hasta la próxima!

Virtualbox: Una máquina virtual a todo dar

vbox_logo2_gradient Las pocas veces que me ha tocado dar la materia de sistemas operativos he encontrado invaluable el uso de máquinas virtuales para poder mostrar a mis alumnos como funcionan, se configuran, etc. diferentes sistemas operativos.  Antes de tenerlos, era el rollo de crear otra partición e instalar el sistema operativo en la nueva partición para poder trabajar en otro sistema operativo y eso era todo un rollo (recuerdo una vez que dejé que mis alumnos de 4to semestre de bachillerato hicieran eso en un laboratorio de cómputo: después ninguna computadora funcionaba ni con Windows ni con Linux, ¡qué pesadilla!).
Las máquinas virtuales las comencé usando hace muchísimo cuando trabajaba en una planta (Novacel) donde teníamos Macs y PCs y usábamos el Virtual PC para poder usar software de Windows.  Luego con mis alumnos usábamos el Microsoft Virtual PC para explorar sistemas operativos bajo Windows.
Mi nueva laptop tiene el Windows Vista Home Premium de 64 bits y es una lata porque no me deja usar un montón de programas a los que estaba felizmente acostumbrado bajo Windows XP.  No quiero cambiar a XP porque no tengo tiempo ni ganas de andar buscando los drivers para XP en internet y el Windows 7 me da flojera porque el beta que bajé solo funciona durante unos 6 meses y no quiero tener que comprar una copia para poder seguir usándolo.  La solución que se me ocurrió, y que ha funcionado bastante bien, es la de usar una máquina virtual para poder ejecutar mis aplicaciones viejitas favoritas.
VirtualBox de Sun Microsystems es un software que permite hacer máquinas virtuales.  Es gratis, rápido, fácil de usar, estable (tengo un amigo administrador de una red enorme que lo usa a cada rato sin problemas) y eficiente.  Lo he estado usando durante los últimos 2 meses y funciona de maravilla.
Como muchos me han preguntado sobre el software que uso en mi computadora para dar clases, les dejo aquí ligas para que lo puedan descargar, instalar, crear máquinas virtuales y ser un cuasiexperto en VirtualBox en tiempo récord.  Aquí les dejo las ligas:
También les dejo este video que muestra como instalar VirtualBox bajo Windows:
Espero que este software les ayude a aliviar sus penas de Windows Vista y experimentar con otros sistemas operativos (como el Windows 7 que está tan de moda).
¡Hasta la próxima!

18 febrero 2009

Condiciones en C: El gato

Como he dicho en varias ocasiones, uno de los pilares de la programación es hacer que el programa tome decisiones.  En otro ámbito, eso es lo que los papás esperamos de nuestros hijos: de que algún día puedan tomar las decisiones correctas.  Pero al tratar con la computadora es más fácil: nunca va a renegar ni a ignorar lo que le diga (como lo suelen hacer mis hijas) porque siempre va a hacer lo que le indique y siempre lo hará igual.  Claro que mis niñas pueden hacer millones de cosas que mi computadora no, y las amo millones de veces más que mi compu, pero esa es harina de otro costal.
Volviendo al mundo de la programación, casi todos los lenguajes tienen la instrucción IF que nos permite definir las instrucciones que se van a ejecutar en caso que se cumpla alguna condición.  C no es la excepción y en este mensaje voy a hablar brevemente de cómo se programan condiciones usando el IF con C (o C++ que para este caso, da lo mismo).
Antes de que pase otra cosa, mi intención no es dar una clase completa acerca de las sintaxis del IF en C/C++ porque hay miles de páginas que lo hacen muy bien.  Yo solo quiero presentarles un ejemplo para que veas como se puede poner en práctica.  Por esta razón, les presento aquí un pequeño proyecto que hicimos con mis alumnos de Programación Estructurada como un ejemplo que ejemplifique lo que intento ejemplificar.  Dejando a un lado la ejemplificadera, les describí lo que hace el proyecto y una breve explicación de la forma en que funciona en el archivo de audio que puedes escuchar a continuación (o descargar aquí).
Aquí pongo el código del programa y solo quiero hacer un par de notas, por si se te hace que algunos IFs están muy rebuscados (y lo están, por ejemplo fíjate en un IF grandototote que solito revisa si el jugador ganó el gato o no comparando todas las 3 filas, 3 columnas y 2 diagonales).  Es posible usar operadores booleanos para unir varias condiciones para generar un solo resultado lógico, como el AND (&&) para indicar que se tienen que cumplir ambas condiciones para que sea verdadero o el OR (||) para indicar que la condición es verdadera ya sea si cumple cualquiera de las dos condiciones.
Otra aclaración: sé que no es parte del C estándar, pero estoy usando las instrucciones cin y cout simplemente por facilidad.  Sé que estas dos funciones pertenecen a C++, pero cualquier compilador los entiende y me quiero centrar en las condiciones, no que anden lidiando con el printf y scanf.  Para más información y detalles sobre el cin, scanf, cout y printf, consulta esta página de Monografías.com.
Ahora sí, aquí está el código (si no lo alcanzas a ver bien, haz clic sobre la imagen para verlo más grande):
CodigoGato
Si tienes dudas con el IF, te sugiero que visites parte del curso de C hecha por Nacho Cabañas.  Está muy padre y si realmente estás interesado en aprender C, sería buena idea que consultaras todo el curso.
Espero que este ejemplo te sea útil.  ¡Hasta la próxima!

06 febrero 2009

Turbo C: Un compilador viejito, pero bueno

turbo-cpp
Cuando yo aprendí el lenguaje C en aquellos ayeres de principios de los 90s, usé un compilador de Borland llamado Turbo C.  Funciona bajo MS-DOS (apenas estaba saliendo el Windows 3.1) y es rápido, eficiente y pequeño.
El lenguaje C es estándar (si no, pregúntale a ANSI), así que si quieres aprender no necesariamente necesitas el último compilador non plus ultra, así que si lo quieres bajar, lo puedes conseguir aquí (bueno, también hay otros chorrocientos mil lugares donde lo puedes conseguir).
Si de plano quieres un compilador ultra moderno que sea gratis, también está el Free Microsoft Visual C++ 2008 Express que parece estar bastente interesante.  Si lo bajas y lo pruebas, ahi me dices que te pareció.
Otra nota de interés, estos compiladores compilan (valga la redundancia) programas hechas tanto en C como C++.
Espero que esto te haya sido útil.  ¡Hasta la próxima!

25 enero 2009

Comparando C, C++ y Java

Ya que ando en eso de la historia de los lenguajes de programación (ver mi post anterior con imágenes sobre esta historia), me topé con este sitio web que se encarga de hacer una comparación entre C, C++ y Java.
Aunque hay ejemplos de código y toda la onda, creo que incluso los que son recién iniciados en las artes oscuras y claras de la programación lo pueden entender sin demasiado problemas.
Ojalá les sea útil.  ¡Saludos!

Historia de la programación

Vagando errabundo por el internet me encontré con esta imagen que resume el desarrollo de los lenguajes de programación.  Se me hizo muy interesante en lo particular y como muchos me han preguntado sobre la importancia de los lenguajes, de dónde surgieron, etc., decidí compartirles la imagen.  Si haces clic sobre la imagen, te va a llevar a otra página donde lo puedes descargar (es que está muy grande):
ComputerLanguagesChart
Una editorial hizo otra imagen con una línea cronológica del desarrollo de los lenguajes de programación.  No me gustó tanto como la imagen anterior, pero lo puedes conseguir aquí si te interesa.
Ojalá te sea útil estos recursos para despejar dudas acerca de como y cuando surgieron los lenguajes de programación y qué lenguajes tuvieron influencia sobre otros.  ¡Saludos!

19 enero 2009

Tipos de datos y variables

img_163
Para todo buen programador (véase imagen a la izquierda, jeje), es indispensable saber hacer algoritmos.  Sin embargo, para hacer algoritmos para la computadora, es indispensable guardar información.  No se puede trabajar con datos, si no puedes ponerlos en algún lado, ¿cierto?
Dejando estas obviedades a un lado, vamos viendo lo que son los tipos de datos, cómo se dividen, qué tipos hay, etc. para luego hablar de variables, las cuales son una especie de encarnación de los tipos de datos en un programa.  Ahí vamos…
Pero antes de hablar de tipos de datos, ¿qué es un dato?  Un dato, según la RAE (Real Academia Española) es el antecedente necesario para llegar al conocimiento exacto de algo o para deducir las consecuencias legítimas de un hecho.  He allí la importancia del manejo de datos, la justificación misma por la que las computadoras son indispensables para la humanidad entera (parece exagerado esta afirmación pero, ¿qué pasaría si apagáramos las todas las computadoras del país media hora?  ¿Quién se haría cargo de manejar toda esa información?).  Por otro lado, también aclara que en la informática, un dato es la información dispuesta de manera adecuada para su tratamiento por un ordenador.  Esta definición es exactamente lo que andamos buscando, o por lo menos para los fines de este artículo.
Para la computadora, todo lo que almacenes es un número binario, o sea, puros unos y ceros.  Absolutamente todo.  Es por esta razón que hay que decirle a la computadora cómo queremos que trate a ese número, porque hay información de todo tipo: números, letras, valores booleanos (verdadero o falso), fecha, hora, etc.  Por ejemplo, la computadora podrá guardar el un byte en su memoria que almacene el siguiente número binario: 10000010.  Si lo interpretamos como un número entero, equivaldría al 130 pero si lo interpretamos como una sola letra correspondería al “é” (gracias al código ASCII).
Los datos se pueden dividir en ordinales y escalares (o no-ordinales como dicen algunos autores).  Los datos ordinales son aquellos que almacenan datos que se pueden contar, o sea que se puede establecer una relación uno a uno entre sus elementos y el conjunto de números naturales, como lo son los enteros, lógicos o booleanos y los caracteres o letras.  Los datos escalares o no-ordinales son aquellos que no se pueden contar y se pueden resumir que son los números reales o sea, números que contienen un punto decimal.
Un tipo de dato básicamente en un conjunto de valores que un dato puede tomar durante un programa.  Básicamente hay dos tipos de datos: los numéricos y los de caracteres (letras).
Como decía antes, una variable es algo así como la encarnación de un tipo de dato en un programa.  Formalmente podríamos decir que una variable es un campo de memoria que almacena información, la cual puede cambiar en cualquier momento.  En álgebra lo usan para definir cosas de las que todavía desconoces su valor y en la computación lo usamos para guardar datos, por lo que cada variable tiene un tipo de dato definido.
Haz de cuenta que las variables son como los contenedores (como Tupperware) que tienen en su casa: cada bote contiene un solo tipo de cosa, ya sea café, sal, azúcar, etc.  El tipo de contenido (café, azúcar, etc.) es el tipo de dato y tendrías un error terrible si al bote de azúcar lo llenas con sal.  Probablemente en tu alacena el bote donde pones la sal es idéntico al que usas para la pimienta, pero lo que difiere es la forma en que lo usas, el contexto en el cual usas el contenido de cada bote, al igual que las variables, las cuales son espacios en memoria que contienen dígitos binarios y la única diferencia entre una y otra es la forma en que se usa el número que está almacenado.  Para hacer cualquier cosa en la cocina, necesitas de varios botes de tu alacena con los diferentes ingredientes que vas a usar en tu receta/algoritmo porque guardan cosas/datos indispensables para la solución.
A continuación voy a poner una tabla con los tipos de datos principales (o por lo menos los más usados).  Escribiré el tipo de dato, el número de bytes que ocupa en la memoria y el rango de valores que acepta.  Aunque los nombres de los tipos son en lenguaje C o C++, estos tipos de datos existen en todos los lenguajes de programación.
Tipo
Tamaño (bytes)
Valor mínimo
Valor máximo
char
1
-
-
int
2
-32768
32767
unsigned int
2
0
65536
long int
4
-2^91
2^91 - 1
float
4
-3.2 x 10^38
3.2 x 10^38
double
8
-1.7 x 10^308
1.7 x 10^308
Ok.  Creo que más o menos agarramos la onda de lo que tratan las variables, pero ¿cómo nos referimos a ellas?  Fácil.  Haríamos lo mismo que para hablarle a cualquier amigo: por su nombre.  El único problema radica en decidir qué nombre ponerle.
Las variables, al igual que las personas, pueden tener el nombre que sea.  Sin embargo, no todo nombre es adecuado.  En álgebra, estamos acostumbrados a usar nombres como x, y o z, sin embargo son muy pocas las variables usadas en las funciones matemáticas, a diferencia de un programa para la computadora que puede manejar miles de datos al mismo tiempo.  Es por eso que se debería poner un nombre que tenga que ver con el dato que quiero guardar.  Por ejemplo, en lugar de ponerle juanito_perez a una variable donde almaceno la cantidad que voy a descontar del subtotal del pedido de un cliente, sería mejor ponerle un nombre como descuento.
Hay un estándar que nos ayuda a nombrar variables una nomenclatura húngara que consiste en unos lineamientos que sirven para nombrar variables de tal manera que al solo ver la variable, nos demos cuenta de qué tipo de dato se trata.  Para usar esta nomenclatura inicias los nombre de todas las variables con tres letras que indican el tipo de dato, seguido del nombre de la variable que comienza con una letra mayúscula.  Por ejemplo, si el porcentaje de descuento del que hablaba en el párrafo anterior es de tipo entero, el nombre de variable que sugiere esta nomenclatura sería intDescuento.
Antes de poder usar una variable, hay que declararla (hay lenguajes que no te obligan a hacerlo de forma explícita porque si no lo haces, el lenguaje le asigna un tipo de forma automática).  Al declarar una variable el programa reserva unos cuantos bytes de la memoria RAM y recuerda que a esos bytes los va a conocer como esa variable y va a tratar el dato que está allí de determinado forma (según el tipo de datos).
Cada lenguaje de programación tiene su propia manera de declarar variables.  Por ejemplo, en C y C++ la sintaxis sería esta:
tipo nombre;
Por ejemplo:
int X;
También se pueden declarar muchas variables del mismo tipo en una sola línea, como se ve aquí:
double dblTotal,dblPrecio,dblCambio;
E incluso le puedo asignar un valor a la variable para inicializarla con algún valor (nota: las constantes que son caracteres van entre apóstrofes.  Si no las hubiera puesto en el siguiente ejemplo, estaría tratando de asignarle a chrLetra el valor almacenado en la variable S):
char chrLetra=’S’;
Aquí le paro.  Luego podremos hablar sobre como usar variables en otros lenguajes, pero de todos modos es muy similar.  ¡Hasta la próxima!

17 enero 2009

Crea tu control de videojuego tipo Wii, ¡gratis!


Bueno, casi gratis.  En el blog de Educación Tecnológica, un blog que me gusta revisar de vez en diario (¡gracias por el RSS que me facilita la vida!) me enteré de Camspace, un software gratuito que te deja usar tu webcam y cualquier objeto que se te ocurra para controlar tus videojuegos, casi como lo harías con el Wii, pero gratis.
Solo es cuestión de echar a volar la imaginación.  A mi se me ocurren usos con gente que tiene dificultad con los controles “normales” de una compu (teclado, mouse), como es mi hija de 2 años.  Otros ejemplos los puedes encontrar aquí encontrarás una página donde están haciendo aplicaciones muy padres.
Todavía no lo pruebo, pero parece fascinante.  Aquí les dejo el video para que se emocionen igual que yo, jeje.  Si lo prueba, dejen aquí un comentario con sus experiencias.  ¡Hasta la próxima!





07 enero 2009

El algoritmo: ¿de qué se trata esta onda?

Seguramente has escuchado hablar de la palabra algoritmo, pero realmente ¿qué es?  O mejor dicho, ¿de qué se trata?  Y una vez que sabes que rollo, ¿cómo lo ejecuta la computadora?  Ante esta incógnita, voy a hablar un poco (o mejor dicho, escribir un poco) acerca de los secretos recónditos de un algoritmo.

La Real Academia de la Lengua (o RAE para los cuates), nos dice que un algoritmo es “Conjunto ordenado y finito de operaciones que permite hallar la solución de un problema”.  Con esto creo que queda muy claro de qué trata el rollo.

Sin embargo, ¿qué chiste tiene escribir aquí lo que dice la RAE?  Voy a adentrarme un poco a las raíces para remontarnos en la historia chirolira acerca del origen de la palabra algoritmo.  Esta palabra viene del apodo de Mohammed Ibn Musa Abu Djefar, mejor conocido como Al-Khwarismi (en español: Aljuarismi), un sabio musulmán que escribió más o menos alrededor del año 830 un libro sobre las matemáticas, concretamente sobre el álgebra.

Como ya se definió antes, un algoritmo consta de los pasos para resolver algún problema, algo así como una receta de cocina: si sigo los pasos, llego a obtener un platillo interesante (y esperemos que sabroso también).

Vamos viendo como se “ejecutaría” un algoritmo de cocina (o sea, una receta).  En primer lugar tenemos una entrada que constaría de los ingredientes necesarios.  En segundo lugar tenemos todo el equipo (hardware) necesario para cocinar (como ollas, cubiertos, platos, etc.), los cuales formarían la unidad de procesamiento.  Aunque no se note, existe una parte en el cerebro del cocinero que controla el proceso, cosa conocida como la unidad de control.  Y al final se tiene el platillo terminado, o sea la salida.  Estos componentes se pueden observar en la siguiente imagen:

 
 Llevando nuestra receta a la computadora, tenemos que tomar en cuenta otro elemento importantísimo y vital: la memoria.  Aquí cambia poquito como se procesa información en comparación a nuestra receta culinaria.
  • La entrada consiste en todos los datos que se van a procesar, así como el programa que dice qué se va a hacer con estos datos.
  • La memoria almacena la entrada y los resultados de la unidad de procesamiento.
  • La unidad de control lee el programa y lo traduce en una serie de operaciones de máquina.
  • La unidad de procesamiento realiza todas las operaciones (sumas, multiplicaciones, etc.) sobre la información que recibe de la memoria.
  • La salida son los resultados de la unidad de procesamiento, almacenados en la memoria y transmitidos a un dispositivo de salida.

En un diagrama, lo veríamos así:

 
 Los algoritmos se pueden representar básicamente de dos maneras: de manera gráfica y con texto.  Hay 2 o 3 representaciones gráficas donde la más conocida es el diagrama de flujo.  Estos diagramas usan símbolos para representar acciones y son tan conocidos que también son usados fuera del ámbito computacional.  Otro diagrama menos conocido, y que no me gusta para nada, son los diagramas NS o de Nassi-Schneiderman que representa un algoritmo en un bloque cuadrado con varios rectángulos interiores.  En cuanto a representaciones basados en texto, está el pseudocódigo, la cual no es más que todos los pasos escritos uno tras otro.

Escribir los algoritmos es algo fundamental para el buen programador.  Muchos de mis alumnos creen que es una pérdida de tiempo sentarse a pensar una solución, sin embargo es muy importante y te ahorra mucho trabajo, porque el error de programación más difícil de corregir es el lógico, el que surge de un algoritmo que no resuelve el problema.  Los errores de sintáxis, o sea de cosas mal escritas (te falta un punto y coma o un espacio, escribiste mal el nombre de la instrucción, etc.) se corrigen rápido ya que el compilador te indica en qué línea te equivocaste.  Pero ante errores lógicos no hay nada que pueda hacer el compilador.

Aunque vivió muchísimos años antes de los rollos de las computadoras y los algoritmos, Sócrates dijo algo que aplica a los errores lógicos: decía que no hay peor mal que la ignorancia en acción.  Te reto a que no dejes que la ignorancia entre en acción y planifiques tus algoritmos.  No es necesario que tengas que hacer un diagrama de flujo para cada algoritmo que hagas, pero encuentra una herramienta que te sea útil para pensar tu solución.  Por ejemplo, yo trato de diagramar mis sistemas con una mezcla de diagramas de Warnier con código en C.  Eso me funciona, pero tu debes de encontrar tu propia forma de solucionar retos.

¡Hasta la próxima!

30 diciembre 2008

Logos gratuitos al instante

Si eres fan del diseño, pero no se te ocurre la gran idea para un logo simple que necesitas, me topé con un sitio interesante que regala logotipos con todo y sus archivos originales de Photoshop, Ilustrador, etc.
Se llama LogoInstant.com y vale la pena que le des un vistazo.
¡Saludos!

Nuevos emoticones para MSN Messenger

Sé que no soy gran fan del Messenger, pero siempre envidio a los que tienen emoticonos, emoticones o como quieran llamarles (traducción de "emoticon" que tampoco es palabra inglesa "oficial".  La historia de donde surgen es interesante, pero ese podría ser tema para otro post) interesantes, chistosos o creativos.
Es por esto que bajé el nuevo paquete de emoticons de Microsoft para el MSN Messenger.  Como soy medio grinch, eliminé los que tienen al changuito vestido con gorro de Santa Claus, pero creo que a muchos de ustedes les parecerá interesante.
Si quieren conseguirlo gratis, bájenlo aquí.  ¡Saludos!

17 diciembre 2008

Fotos semestre Agosto-Diciembre 2008

Aquí les comparto las fotos de mis queridísimos alumnos con los que hicimos fluir ciencia en las aulas.


1er semestre de Comunicación Bilingüe (1 TCB)
Materia: TICs



1er semestre de Comunicación (1B TCM)
Materia: TICs


1er semestre de Diseño Gráfico (1B TDG)
Materia: TICs


1er semestre de Diseño Gráfico Vespertino (1 TDG Vesp.)
Materia: TICs


3er semestre de Informática Administrativa (3 TIA)
Materia: Algoritmos y Programación


3er semestre de Programación (3 TPO)
Materia: Principios de Programación


5to semestre de Programación (3 TPO)
Materia: Programación Visual Basic 2005


¡Saludos!

29 noviembre 2008

Archivos aleatorios: Visual Basic 6 al azar

Es imprescindible almacenar muchos datos a disco. Es por esto que los sistemas manejadores de bases de datos, también conocidos como DBMS, son indispensables (si quieres saber más de este rollo, puede revisar este mensaje que escribí sobre ello).

Sin embargo, como diría la sabiduría popular: "dependiendo del sapo es la pedrada", o sea queno voy a invertir miles y miles de pesos en instalar Oracle en un servidor chiroliro para un sistema que hice para guardar las direcciones de correo y teléfonos de mis cuates.  Cuando este es el caso podemos encontrar alternativas sencillas que nos permiten cumplir la función sin tener que gastar mucho.  En esta ocasión voy a mostrar como usar archivos de acceso aleatorio usando Visual Basic 6.0 (hace tiempo hice lo mismo, pero usando Visual Basic 2005, lo cual puedes leer aquí).

Antes que nada, los archivos aleatorios no son adecuados para grandes cantidades de información, ya que, aunque pueda tener acceso a cualquier registro que se le pegue la gana, están ordenados conforme fueron dados de alta y este orden no es muy útil en la mayoría de las ocasiones.  Por el otro lado, es gratis (bueno, ya pagaste tu computadora y periféricos y tu copia de Visual Basic 6, así que no es tan gratis que digamos...) y funciona bien para pocos registros.

Ahora sí, voy a dejar el choro mareador con el que empecé para dar lugar al problema en cuestión.  El siguiente ejemplo es un programa que almacena información acerca de mis amigos, una agenda telefónica sencilla.  La interfaz del programa es este:



Antes de hacer cualquier otra cosa hice un módulo que contiene código que puede ser usada por cualquier ventana que forme parte del proyecto.  Aquí defino el tipo (Persona) y declaro algunas variables globales.  Contacto es una variable de tipo Persona, RegActual almacena el número de registro que aparece en la ventana y TotalReg tiene el número total de registros en el archivo.  Este es el código:



Una vez terminado con las declaraciones globales, comencé el código de la ventana (que llamé frmAgenda) con el evento Load.  En esta subrutina cuento el número de registros que tiene el archivo para poder luego saltar de uno a otro o agregar uno al final.  Este es el código:


¡Listo!  Ahora ya tengo guardado en TotalReg el número de registros dados de alta.  Nota: la función MuestraReg solamente pone en la ventana el registro actual (o sea, llena las cajas de texto con los datos del registro en la posición RegActual).  Más adelante pongo el código.

Ahora escribo la función que guarda un registro nuevo, lo escribe al final.  Abre el archivo, llena la estructura Contacto y luego usa la función Put para escribir los datos en el archivo.  Al final cierra el archivo.  Este es el código:


Después de esto programé la función que permite buscar un registro.  Consideré que el dato por el que buscas un registro de una agenda es el nombre, así que esta fución básicamente va leyendo los registros de manera secuencial hasta encontrar el registro con el nombre deseado o que llegue al final del archivo sin encontrarlo.  Este es el código:


Los siguientes botones están muy sencillas de programar.  Los botones btnSig y btnAnt me permiten leer el registro siguiente y anterior, respectivamente.  Lo único que hacen es modificar la variable RegActual y usan la función MuestraReg.  Este es el código:



Esta es la función MuestraReg que solamente abre el archivo, lee el número de registro indicado por la variable RegActual y pone los datos de lo leído en las cajas de texto.  Este es el código:


Para terminar, tengo que decirles que encontré un problemita y si alguien sabe la solución, le encargo que me escriba un comentario.  La bronca es que siempre me inserta un registro en blanco al principio del archivo.  Fuera de eso, todo funciona de maravilla.  Intenté corregirlo viendo si el número total de registros (TotalReg) es el primero, que lo escriba en esa posición en lugar de escribirlo en esa posición + 1., pero luego me grabó un registro en blanco después del primer registro.  Para que el programa funcione a todo dar, siempre hay que tener en cuenta que el primer registro con datos es el segundo.

Ojalá alguien pudiera resolver este detallito, pero pese a ello, creo que todo este rollo te puede ser útil.  ¡Hasta la próxima!

21 noviembre 2008

Full Spectrum Warrior: juego de estrategia militar


Full Spectrum Warrior es un juego táctico en tiempo real que fue basado en material del ejército norteamericano. Juegas el papel del líder de un escuadrón y coordinas las actividades de dos escuadrones (Alpha y Bravo) en su recorrido por una zona de guerra urbana.

Este juego originalmente era comercial en el 2004 (léase: se tenía que comprar), pero ahora el ejército de Estados Unidos dio una lana para que fuera gratuito. El juego mide 1.6 Gb y necesita una conexión a internet para funcionar, pero si te gusta este tipo de juegos, tienes que probarlo.

Por otro lado, siendo un poco más reflexivos, es interesante el hecho de que el ejército de Estados Unidos quiera que muchos se diviertan con este juego. Me imagino ue tiene algo que ver con ideología, o tal vez para que la gente no crea que lo que hacen en Irak no está tan mal... quien sabe. Como diría la viejita del comercial: "Esa... es otra historia...".

La página oficial del juego es esta, pero no lo puedes descargar de allí. Si lo quieres descargar, lo puedes hacer aquí, aquí o aquí.

¡Hasta la próxima!

28 octubre 2008

Preparándose para la OMIJAL 2008

El otro día les mencioné que ya va a comenzar la OMIJAL 2008, o sea la Olimpiada Mexicana de Informática, eliminatoria Jalisco.  Sin embargo, quiero dejarles unos tips para aquellos que desean participar.

El concurso tiene tres etapas.  La primera consta de un examen escrito de problemas lógicos este 15 de noviembre en el auditorio Pedro Arrupe del ITESO.  No son cosas difíciles, pero hay que ir agarrando práctica y para ello lo mejor es ponerse a resolver problemas.

Antes que nada, vean la sección ¿Cómo me preparo? de la página de la OMIJAL.  Allí vienen datos y tips para los exámenes lógicos y de Karel e incluso vienen los exámenes de ejemplo de Karel, el lógico y el de C++ que puedes bajar y resolver para que te vayas dando cuenta como está la movida.  De Karel te sugiero que veas mi blog los problemas que tienen que ver con Karel.  Otra página que tiene más problemas en búsqueda de solución es este.  Traten de resolver todos los problemas que les sean posibles.

En esta página, del sitio viejito de la OMIJAL, puedes encontrar problemas lógicos y exámenes de Karel para ir afinando.

Espero que esta información te sea útil para participar en el concurso pero sobre todo para aprender algo nuevo.  ¡Hasta la próxima!

El Tony y sus ondas...

Related Posts Plugin for WordPress, Blogger...