Protected: Pídeme la contraseña para leer esta entrada
31
01
2008
by José Cabo
28
01
2008
by José Cabo
Me ha llevado menos tiempo del que esperaba. He conseguido poco a poco, pensando muchísimo, rehaciendo miles de veces las cosas hasta conseguir llegar a donde he llegado. La versión que os voy a dejar está muy en desarrollo y espero mejorarla en breve… pues ni si quiera es beta ni nada pues solo me he asegurado de que funcione un tipo de instrucción… pero pronto lograré que funcione cualquier tipo (con unas pocas normas estrictas de codificación…).
Actualmente soporta a la perfección esta instrucción: (variable,puerta,variable). La instrucción debe estar entre paréntesis (siempre) y cada, llamemosle comando, separado por una ‘,’ [coma].
Existen 5 tipos de puertas (pero 4 de ellas son las que realmente se pueden usar en las instrucciones): and [&]; nand [/&]; or [|]; nor [/|]. Acabáis de comprobar que el comando / lo que hace es negar la salida de la puerta.
El comando / delante de las variables debería estar soportado, pero no es así… y tengo que averiguar el por qué.
Lo importante es que la base ya la tengo hecha y he dejado preparado para dar soporte a instrucciones más complejas como ((a,&,b),|,(a,&,b)) ó incluso (((/a,&,b),+,/b),|,/(a,|,/(a,&,b))). Realmente me falta poco o eso creo pues solamente me hace falta llenar de parches todo xD.
Actualmente no hay reconocimiento de nombres de las variables existe en su lugar un vago reconocimiento de ‘primera variable’ y ’segunda variable’. Tampoco se permite puertas de aridad superior a 2.
En el futuro espero rehacer el código completamente y usar de forma total las variables struct pues creo que son básicas para crear un lenguaje interno. Usando este tipo de variables creo que se programará mejor pues evitaré estar usando vectores tan asiduamente… resulta poco práctico usar arrays (mis favoritos…).
Pues creo que aprenderé a crear un lenguaje interno de comandos e instrucciones introducido mediante un string. Vamos, la panacea :P.
He aprendido que una planificación previa en papel ayuda bastante (esta parte se la dedico a Alex… jaja).
Os dejo los enlaces de descarga. Actualmente no están puestos en codis pero en cuanto me informe de como funciona (gracias a Alex de nuevo) lo pondré ahí para que tengáis una mejor experiencia de descarga.
Actualizado (enlaces de descarga ya corregidos):
Descárgate el código fuente. (Para compilar gcc -o Bloodtraining main)
Descárgate los binarios ya compilados para Linux.
¡¡A probarlo y a aconsejarme!!
PD: Si alguien enlaza al programa… le agradecería que fuera a esta entrada y no a los enlaces de descarga. Gracias.
PPD: Es multiplataforma, con gcc se compila sin problemas.
26
01
2008
by José Cabo
Como ya sabéis el otro día hice un examen de FCO que consiste en puertas lógicas (AND, OR, NAND, … y cosas de estas) de circuitos. En el Poliformat de la UPV (una web para los estudiantes con todo tipo de información, documentos y programas) existía un programa llamado Entrenador pero era una basura. No me gustaba. Y, no se porque, pero no funcionaba correctamente (estaba repleto de bugs y más de una vez he aprendido a saber bloquearlo). Ah… y lo peor de todo es que precisaba de .net 2.0 de Microsoft y eso me obligaba a irme a Windows (además de obligarme a usar una resolución de 1280×1024 porque el programa no tenia forma de redimensionarse, era patético).
Me resultaba imposible estudiar con el Entrenador, no podía hacer la circuitería y comprobar que estuviera correctamente hecha porque…en muchos casos no funcionaba (estando bien montado) y llegaba a frustrarme… Así que, ese mismo día me decidí a que tenía que empezar un proyecto para crear mi propio entrenador lógico multiplataforma y en un principio solamente en modo consola (con posibilidad de en un futuro usar alguna GUI.
El proyecto, el cual todavía no tiene ninguna base y pienso ponerme en serio ahora cuando acabe los estudios, estará escrito en el lenguaje C y, en principio, será solamente en modo consola pues todavía no tengo conocimientos para trasladar cualquier código a los gráficos.
Creo que usando variables struct, vectores y cosas por el estilo podría hacerlo -CREO-. No se como, pero la entrada de los datos será mediante una cadena de caracteres y esta mediante un for podrá leer lo que diga cada instrucción (cada “instrucción” estará separada por algún tipo de carácter…).
La salida, como ya os imagináis, será una tabla de verdad completa. También tendrá “los leds” de salida de un entrenador normal (obvio) pero representados de alguna otra forma… Estoy pensando en que ‘cada segundo’ (o cada frecuencia) sea una linea de la consola con lo que como máximo está contendrá 8*2 caracteres aproximadamente… así que eso aumenta la seguridad a la hora de evitar la destrucción de la linea por baja resolución.
Que conocimientos me faltan desarrollar? Simplemente… todos. Empezando por aprender a llamar a otros ficheros de código (por ejemplo main.c que llame a la función AND que está en PLogicas/and.c: vamos, evitar que todo el código esté en un fichero). También sería buena idea empezar a familiarizarme en como coño voy a crear la entrada del circuito (con cadenas de caracteres como ya he dicho y eso supone aprender a ‘crear’ un lenguaje de configuración propio del programa, algo en plan: f=((not,A),NAND,(B,OR,C)) y eso xD. ¡¡Y que se note mi nota!! XD
Y eso es todo amigos!!
PD: si tenéis idea de como ayudarme… ya sabéis, ayudarme! xD
PPD: por supuesto, la plataforma de desarrollo será Ubuntu GNU/Linux (por ahora Gutsy Gibbon 7.10)
PPPD: La licencia del programa, aunque es pronto para pensar en ello, será SL libre del todo. Alguna GPL de estas.
25
01
2008
by José Cabo
Después del descanso por hacer mi segundo examen del primer cuatrimestre… despierto con bastante alegría de haber hecho algo realmente bien.
El examen era de FCO como ya sabíais y consistía en dos parciales (primer parcial T2-3 y segundo parcial T4-5-6). En el 1ºParcial creo tener un 10… (sinceramente xD), no era para nada complicado. En el segundo parcial debería tener un 5, pero no mucho más… (eso de sumar y restar en binario, en coma flotante y demás cosas de esas sin usar la calculadora me cuesta muchísimo jaja, en fin). Así creo debería estar aprobado sin mayores problemas (pensaba que esta sería de las asignaturas más chungorras… y para nada).
Los próximos exámenes ya son más serios. Empezaré el día 1 con Física (a las 9 de la mañana). El resto de exámenes los hice por la tarde y por la mañana me pasaba en la cafetería estudiando y repasando con mis otros compañeros de clase… venía súper bien. Después vendrán EMI y AM (la que creo que más hay que estudiar…).
Y… como os he prometido aquí os pongo las siglas y algún comentario de mis asignaturas de este primer cuatrimestre:
A eso habría que sumarle algunas prácticas de algunas de las asignaturas. Este segundo cuatrimestre se me añaden nuevas asignaturas (como INT) y se me quitan otras (como EMI). Ya os informaré de como me van yendo los exámenes…. porque vamos, no tengo tiempo y aquí me tenéis, escribiendo esta entrada horas antes de irme al cine con los amigos de la facultad jaja.
PD: solo decir… que la universidad MOLA MUCHÍSIMO, sobretodo la UPV y, aunque nuestra facultad esté apartada de socialmente… mola mucho. Solo por el nuevo ambiente, los nuevos amigos y todo vale la pena intentarlo. ue ue! xD
21
01
2008
by José Cabo
Hoy he estrenado época de examen con uno de Programación, la asignatura que más me gustaba pues precisa de creatividad e ingenio… no solo para llegar al resultado sino para ser original a la hora de hacer el código (pues hay muchas formas de llegar al resultado). Este jueves tengo el próximo… será de FCO. Espero ser afortunado y decir a la salida “creo que me ha salido bien” como he hecho con el de programación.
Tendré libre una semana… para que nada más llegar el día 1 tenga Física, seguido a los pocos días de AMI y AM por último el día 8.
Dadme suerte… pues la necesitaré.
PD: ¡¡aprovecho para felicitaros el nuevo año 2008!!! Decir también que en Febrero celebraré haber estado 2 años con vosotros dándoos la lata. Y, por supuesto, promocionar mi blog cooperativo.