Vamos a seguir con esto

21/02/2011

Bueno, seguimos adelante.

Ahora lo que me pasa es que quiero aprender Ruby, un lenguaje de programación que se está expandiendo como la espuma, y que tiene mucha potencia en cuanto a lo en diversión se refiere, ya que como indica su creador, es un lenguaje para divertirse programando, y como no podía dejar la entrada sin una pequeña reseña, allá vamos.

def funcion(parametro)

#comentando el codigo autoexplicativo

num=0.0

puts "Introduce dato, o cero para salir"

entrada = gets

while entrada.to_i!=0

total+=entrada.to_i

num+=1

end

puts "media = " + total/num

end

Como se puede observar, tiene una sintaxis similar a Python, pero su funcionamiento es bastante distinto, en principio, para los dados en la materia podría parecer que el ejemplo es una función típica de ejemplo, y estaría equivocados, Ruby tiene una metodología distinta, ya que en Ruby TODO es un objeto (supongo que ya habréis oido ésta frase en algún momento), así pues, el ejemplo de antes es un método de una clase, ¿que de qué clase?, pues está claro, de la clase “Class”, que existe en todo programa Ruby.

Un momento, ¿qué?

Empecemos de nuevo, que parece que hoy no quieres entender, Ruby es un lenguaje de programación, hasta ahí bien, ¿no?. Pues para más datos, es interpretado, fuertemente orientado a objetos, de hecho no existen tipos de datos, sino clases de objetos, los mismos números que escribes en los códigos fuentes o en el intérprete, son de la clase FixNum, y tienen sus propios métodos.

Con este concepto claro, sigamos adelante, en este caso con la sintaxis;

#sentencia if

if condicion==true then

#cosas que se realizan si se cumple

end

#sentencia if + else

if condicion==true then

#cosas del if

else

#cosas que pasan si no se cumple la condicion

end

Más o menos las cosas van así

En Ruby es todo “bastante opcional”, por ejemplo, cualquier paréntesis que no provoque confusión se puede dejar, o quitar, como con el paso de parámetros de las llamadas a los métodos, o en las operaciones que no sean necesarios, en las condiciones de los “if”, no obstante, nunca está de más ponerlos, aunque al final te acabes acostumbrando a no usarlos nada más que cuando son realmente necesarios.

Cómo seguir aprendiendo

Desde el Aula de Software Libre de la universidad de Córdoba se va impartir un taller teórico-práctico de Ruby a partir de la semana del 28 de Febrero de 2011, y es seguro que asistiré, así que espero volver la semana que viene a contaros más acerca de Ruby, ya que esta pequeñísima introducción nada tendrá que ver con cómo se trabaja en realidad con éste lenguaje que tanta libertad y diversión reparte.

Anuncios

Sistema de Automatización de Experimentos de Distribución en Planta

28/07/2009

Bueno, aquí empezamos la andadura del pfc, pero por ahora, sin muchas prisas, que ya llegaran…

Pues bien, como sistema de experimentación, lo fundamental que debemos tener son EXPERIMENTOS, hasta aquí estupendo, pero… ¿de qué se compone un experimento? Vamos por pasos, un experimento debe ser la agregación de:

  • Por una parte, los datos de entrada, como pueden ser: Población, Generaciones, Tipo de algoritmo,…
  • Por otra parte, también debe contener los resultados en caso de que haya sido realizado el experimento.
  • Vamos a incluir también una identificación de experimento (id_experimento), que bien podría ser un número entero sin signo.

De esta manera conseguimos sacar algunas entidades, como por ejemplo, la entidad Entrada, que va a contener los datos de entrada para el algoritmo; la entidad Salida, que va a contener las soluciones a las que llegue el algoritmo, y también podemos conseguir la entidad Algoritmo, que incluirá todos los parámetros necesarios para que el algoritmo funcione correctamente.

Como vamos a necesitar que las Salidas de un Experimento puedan ser usadas como Entrada en otro Experimento, se va a crear por comodidad otra entidad “contenedora” de los datos reales, siendo las entidades Entrada y Salida meras indicaciones de qué datos se van a usar (las salidas serán creadas en cada experimento).

En cuanto a la entidad Algoritmo, aún no está muy clara su inclusión en el diagrama entidad-relación, así que debemos detallar su función de manera más explícita, como por ejemplo, vamos a ver cuales atributos serían necesarios.

  • Nombre de Algoritmo (que sería considerado clave primaria)
  • Parámetros necesarios
  • (…)

Me parece también una buena idea la de disponer conjuntos de opciones listas para cada experimento, por eso es posible crear una entidad a la que se le denomine parametros, que contenga todo lo relativo a los parametros del experimento, como por ejemplo:

  • número de generaciones
  • tamaño de la población
  • probabilidad de mutación
  • tipo de mutación
  • probabilidad de cruce
  • tipo de cruce
  • evaluación
  • población de inicio

Por ahora, no le vemos disinción en cuanto a poner estos parametros directamente en la entidad experimento, sin embargo, de esta manera se podrán crear experimento con los mismos datos de inicio sin esfuerzo para poder, de ésta manera evaluar el desenpeño de distintos algoritmos.

Por ahora nos quedamos así, con la explicación textual, más adelante realizaremos el diagrama de Entidad-Relación


[PFC] Milleage set 0

02/07/2009

Bien, empezar, siempre se empieza por el principio, asi que alla vamos.

Con mi portatil puesto a cero, y mi sobremesa puesto a cero hace bien poco (porque siempre hay que estar limpio) vamos a dar comienzo a los logs basicos de mi pfc.

Como primero aun no he hecho nada, aunque deberia, pero eso es otra historia… por eso me voy a proponer dar estos anuncios de mi progreso, para que nada se vaya quedando atras.

Asi que esta entrada servira como puesta a cero del marcador y poco mas, paso siguiente: Primer Acercamiento a la Base de Datos del Sistema, que espero que sea lo mas detallada posible, ya contare…


Proyectos/Ideas

29/06/2009

Después de varios meses sin nada que decir al mundo, vuelvo a las andadas.

Esta vez hablaré de mis proyectos, que no son pocos, están entre ellos:

  • Crear un ajedrez con OpenGL
  • Aprender Python
  • Hacer una Aplicación con comunicacion por Red
  • Aprender QT a fondo
  • Realizar actualizaciones del blog asiduamente

Estas son solo algunas de las que se me ocurren ahora mismo, en la facultad después de hacer un examen de redes (posiblemente suspenso), a ver si llevo a cabo alguna, que espero que si.

Por ahora le cambiaré el título al blog, a ver si así tengo más cosas para escribir, ya que entiendo poco de la blogosfera nacional, a partir de ahora pasará a ser: “Cosas”, para poder desquiciar un rato cada poco tiempo, a ver si esto no lo abandono