BASIC

Actualmente a mis alumnos les suelo decir que un Lenguaje de Programacion no es mas que un Interprete del Pensamiento Humano, es decir, se pone "la idea" en terminos que el computador pueda entender. Entonces con ellos llegamos a la conclusion siguiente: Un pensamiento caotico producira programas (aplicaciones) inestables, luego habria que tener las ideas claras antes de pensar en trazar una linea de un diagrama de flujo.

Cuando me encontre con mi Timex, de primera intencion no crei necesitar mas que INPUTS, PRINTS y los caracteres aritmeticos ( + - / * ) ; si queria mostrar un texto debia usar PRINT "texto" ; variable; "texto"... ; si queria leer un valor, INPUT VARIABLE para un numero e INPUT VARIABLE$ para una cadena de texto; luego si queria operar numeros esto lo cargaba mediante un LET VARIABLE = OPERANDO1 (operador) OPERANDO2... ; al principio no necesitaba siquiera de bucles GOTO ni FOR NEXT, ya que solo queria probar la aritmetica del Z80, osea del procesador Zilog de 1 Mhz!!!.

De pronto me empece a aburrir, el invento no emitia ni un beep y como en aquellos tiempos tener una casettera era algo como tener un discman mp3 pues no pude conseguirme ni siquiera programas para correr y escuchar el ruidito de la transferencia, es asi que me acorde de un jueguito que se me ocurrio a nada mas ver las consolas Atari y las clases de la recta numerica: era el combate naval, en este juego mi contrincante y yo poniamos en unos ejes coordenados (usualmente las hojas del medio del cuaderno de matematicas) unos dibujitos de unos barquitos, en la mitad de la hoja los mios y en la otra la de mi amigo, con el lapicero poniamos una bolita en el lado de la hoja que me correspondia y luego doblaba la hoja cubriendo el lado contrario y marcaba mi disparo con la uña, si coincidia con la nave de mi amigo pues le hundia ese barco.

El sistema grafico del Timex tenia una matriz de 44x64-ahora se que se llama matriz- y tendria entonces por lo tanto 44 filas por 64 columnas, para hacer que el Timex me coloque los barquitos (un caracter de cuadraditos como el mostrado en la figura) tendria que tener la capacidad de elegir dichas filas y columnas. Mediante las sentencias INPUT deberia ingresar las coordenadas de mi disparo y cotejarlas con las coordenadas puestas por el Timex 1500, si eran iguales hundia el barco. La logica era relativamente correcta solo que habia un detalle en el que no habia pensado: ¿Cómo se programa un enemigo?

Aca vino el primer problema de definiciones, necesitaba numeros al azar... busque en el diccionario en ingles, azar y ahi encontre "chance" ... fui al index del "User Manual" y no encontre nada parecido, entonces fui al diccionario de sinonimos y antonimos (ideas afines y paronimos) y busque sinonimos para la palabra azar, ahi encontre : ventura, sino, destino, hado, albur, acaso, eventualidad, casualidad, circunstancia, accidente, desgracia, fatalidad, contingencia, coincidencia, aventura, riesgo, fortuna, suerte, chiripa, chamba. De este grupo de palabras escogi eventualidad y casualidad (y cree los numeros casualisticos, jajaja) obteniendo el mismo resultado... luego recorde a mi madre decir otro sinonimo, pero usado en estadistica... cuando me convenci que no me acordaba decidi preguntarle, cuando fui a su cuarto... ya estaba durmiendo... asi que pille uno de sus libros de la coleccion Schaum y ahi fui viendo estadigrafos, dispersion, etc, cada uno con su respectiva consulta en mi diccionario Rances hasta que llegue a la seccion de "Pruebas de hipotesis" y... me vencio el sueño.

Para entonces me habia aprendido 32 palabras nuevas...

Al dia siguiente mi madre me preguntó que hacia durmiendo con el libro de estadística sobre la cara y le explique, entonces me dijo: la palabra que buscas esta en la parte de prueba de hipotesis (PLOP!) , y debe ser ALEATORIA o distribucion aleatoria o NUMEROS ALEATORIOS, entonces retome mi busqueda y encontre la palabra RANDOM, que en mis puestas de cabeza del manual habia visto por alguna parte. Registre de inicio al fin el manual y encontre las funciones RANDOM o RND, me alegre un monton dije:

LET X = RANDOM A
LET Y = RANDOM B

Luego... Ploteo en X,Y sonaba coherente... pero para el timex no.

Asi es que probe lo siguiente:
10 FOR X = 0 TO 63
20 PLOT X , X
30 NEXT X


el resultado? una linea diagonal..

luego intente incluir la funcion rnd, me quedo asi:
10 FOR X = 0 TO 63
20 PLOT X, RND(X)
30 NEXT X

en teoria habia conseguido buena parte de lo que queria... es decir, corria el programa una y otra vez y no marcaba los puntos en el mismo sitio, pero tenia un defecto: la dispersion de puntos era muy segada a un area en particular, es decir seguian el valor de X bastante de cerca, asi me paso en la primera, la segunda hasta que se detuvo el programa por error, con el anuncio 6/20 que significaba algo asi como Overflow.




Comentarios

Entradas populares