sábado, 1 de noviembre de 2014

Robot Zumo

Robot Zumo.


Autor: Ignacio Molina.
Competencia: Trabajo en equipo, Desarrollo de software, creatividad e innovación.


Palabras Clave: NXC, roboticaprogramación.

Descripción de la actividad: Es necesario crear la estructura tanto física como el código fuente que guiara el robot, para ello se cuenta con el kit completo de piezas de robots de lego y la IDE de programación en NXC Bricx Command Center.


Solución: La solución en cuanto a estructura fue colocar tres sensores (dos delanteros y uno trasero) los cuales son proximidad, luz y tacto respectivamente.



Luego en materia de código se hizo lo siguiente:




Exposición: Select Avanzado

Select Avanzado.


Autor: Ignacio Molina.
Competencia: Trabajo en equipo, Desarrollo de software.


Palabras Clave: TrigonométricaMatemáticas, Funciones.

Descripción de la actividad: Se genera una presentación tipo ppt, la cual es expuesta frente a los compañeros de clase y profesor(a). La presentación es entorno a el tema de Select Avanzado.


Solución: Primero que todo, es importante tener en cuenta que para la realización de la actividad, se debe tener una base de datos y una tabla, la cual contenga algunos registros que se diferencien, de tal manera que se los select den resultados variados. Sabiendo esto se tiene la siguiente tabla:



Ademas, contamos con algunos comando básicos que podemos emplear, los cuales están a continuación:

CASE WHEN <condición>
THEN <valor>
ORDER BY <nombre de la columna>  (asc o desc)
GROUP BY (Agrupa por una condicion)
count(*) (Cuenta los registros)
Avg (Saca el promedio)
min (Ordena de minimo a maximo)
max (Ordena de maximo a mi)
Having

En base a los comando anteriores, se comenzó a armar la presentación la cual fue expuesta y se encuentra disponible a continuación:

PRESENTACIÓN SELECT AVANZADO


Reflexión:  La presentación que se llevo a cabo en base a esta materia trajo dos puntos productivos: El aprender mas a fondo acerca de la materia que se aprende, y practicar la comunicación tanto oral como escrita.



Matemáticas: Funciones Trigonométricas


Funciones Trigonométricas.


Autor: Ignacio Molina.
Competencia: Ciencias básicas de la ingeniería, uso de la trigonometría.


Palabras Clave: TrigonométricaMatemáticas, Funciones.


Descripción de la actividad: Es necesario hacer un trabajo de investigación acerca de las funciones trigonométricas, en el se revisaran las principales características de cada una de ellas.



Solución: Para dar solución a la investigación, se pueden usar variados recursos como Internet, enciclopedias, presentaciones, etc.

La pauta de investigación es la siguiente:


1. Razones trigonométricas. 
Para cada razón indicar los componentes.

2. Ángulos notables.
Indicar en términos generales los principales ángulos utilizados en trigonometría.

3. Funciones trigonométricas.
Para cada función indicar sus características principales.

4. Gráfica.
Para cada función especificar cuáles son las gráficas características.

5. Aplicaciones.
Mediante un ejemplo indicar una aplicación de la función en el mundo real.


En base a lo descrito anteriormente, se procedió a la elaboración del informe, el cual se puede encontrar en el siguiente enlace:


Reflexión: El informe realizado, y mas específicamente, la investigación acerca de las razones trigonométricas, sirve para entender de mejor forma cada una de esas razones, y ademas entender para que nos pueden servir en la vida cotidiana y en la ingeniería en si.



jueves, 16 de octubre de 2014

Robot Turista

Robot Turista.

Autor: Ignacio Molina.
Competencia: Trabajo en equipo, Desarrollo de software.


Palabras Clave: NXC, roboticaprogramación.

Descripción de la actividad: Se implementa un programa en lenguaje NXC, el cual es capaz de dar instrucciones definidas a un robot NXT. El robot debe ser capaz de moverse y mostrar un texto por pantalla por cada estación que recorra.



Solución: El robot debe recorrer tres estaciones, las cuales fueron predefinidas por los profesores. En cada estacion el robot debe detenerse una cierta cantidad de tiempo (2 segundos). 
Para comprender la solucion se debe primero entender el recorrido el cual es el siguiente:

En el esquema la estrella de 5 puntas es el inicio, 
la de 4 puntas es el final, los rombos son las estaciones
y finalmente las lineas verdes son el camino.

Ahora, luego de ver el esquema, se puede pensar en el desarrollo de la solución. Primero debemos saber que no contamos con sensores los cuales nos indiquen donde detenernos ni donde debemos virar, por lo que solo debemos jugar con los  tiempos y los dos motores con los que contamos. Entonces:

- Contamos con dos motores (A y B)
-Motor A corresponde al motor izquierdo del robot.
-Motor B corresponde al motor derecho del robot.

Ahora, pensemos en las instrucciones que podemos dar:

-OnFwd(OUT_<motores>,<Potencia>): Hacer avanzar los motores definidos a una cierta potencia. Por ejemplo, si deseamos que se avance en linea recta la instrucción sera OnFwd (OUT_AB,50); es importante recordar que la potencia va de 0 hasta un máximo de 100.

-OnRev(OUT_<motores>,<Potencia>): Es lo contrario de OnFwd, pero es reversa. La sintaxis es prácticamente la misma.

-Wait(<milisegundos>): Se debe usar luego de una instrucción dada, por ejemplo OnFwd, por lo que si ponemos en la linea de abajo de OnFwd un Wait(1000), el robot avanzara por un tiempo de 1 segundo.

-Off (OUT_<motores>); Apaga los motores definidos.

-TextOut(<coordenada eje x>,<coordenada eje y>, <texto>): Muestra un texto definido por pantalla, el cual aparece en las coordenadas especificadas.

Veamos una porción de código de este proyecto:

Por los comentarios se puede apreciar lo que hace esta porción de código, el cual parte en linea recta,
gira a la izquierda y avanza en linea recta hasta llegar a la primera estación, donde muestra que está en la estación 1 y apaga sus motores.


Ya teniendo una referencia de como funciona, se puede revisar el codigo fuente, el cual se encuentra a continuación.


Ademas se incluye un vídeo de referencia del movimiento del robot.



Reflexión.

El trabajo se ve simple pero la verdad es que no es así, ya que se debe calcular según las condiciones del sitio de pruebas y el tamaño del mismo. Por otro lado es una actividad que fue realizada en equipo, lo que aumento la cantidad de soluciones que surgieron.






domingo, 28 de septiembre de 2014

php-mysql

conexion de PHP-Mysql 

Autor: Ignacio Molina.
Competencia: Gestión en TI (Nivel 1),.
Palabras Clave: SQL, código, base de datos,php,paginas web,mysql.


Descripción de la actividad: A través de formularios html y la implementación de php, se conecta a la base de datos de mysql en el equipo y obtiene algunos datos.


Solución: La actividad consiste de dos puntos principales, los cuales se subdividen en partes especificas, eneste caso solo se mostrara el ejemplo 1. Para resumir un poco la actividad, de desglosaran los códigos.

1.- Creación de la base de datos y dos tablas: Lo primero y en este caso para que funcionen los ejemplos que se darán a continuación es crear en la consola de mysql (viene con xampp o wampp) una base de datos llamada ejemplo1. 
Luego de creada la base de datos, creamos una tabla llamada datos, que contenga dos columnas, con nombres de nombre y mensaje respectivamente, ambos tipo varchar.

2.- Descargar los dos códigos php de a continuación, para que a medida que se lea este blog se pueda comprender lo que se hizo:


3.- Trabajo con el primer ejercicio:

a) Lo primero es el trabajo con el formulario html, aquí en las primeras dos lineas se crean dos botones, que llevan por nombre Mostrar tabla y limpiar tabla, a continuación abajo se encuentran dos cuadros de ingreso, los cuales son para ingresar datos a la tabla si se selecciona el botón junto a ellos. A continuación se vera como funciona cada botón.
Código del formulario en html.
Como se ve el formulario en un navegador.


b) Luego de tener el formulario ya completo (escrito), se procede al trabajo con php, en el php de los ejemplos encontraremos tres if, los cuales corresponden a la selección de cada botón:

1.   if(isset($_REQUEST['Mostrar'])): Corresponde al if del botón mostrar, nos dice que si se selecciona ese botón entonces realizara una acción en especifico, en este caso mostrara la tabla completa. 
Para mostrar la tabla usamos las instrucciones que estan dentro del if:
- $db = mysql_connect("localhost","root");: Enlazamos con la base de datos 
-mysql_select_db("ejemplo1",$db);: Le decimos cual es la base de datos que usaremos.
-$resultado = mysql_query("select nombre,mensaje from datos", $db);: Escribimos la consulta que deseamos realizar, en este caso mostramos la tabla, la cual poseía nombre y mensaje.
-El while crea una tabla, la cual nos mostrara los resultados (solo los resultados, no el nombre de la columna).

El resultado de esta consulta en nuestro navegador seria:

2.- if(isset($_REQUEST['Limpio'])):  Si seleccionamos el botón limpio, entonces se limpiara la tabla, eliminando todos los registros. El php de esto es el siguiente:

- Las primeras dos lineas son exactamente iguales a la consulta anterior, es en la tercera donde cambia la consulta sql, que nos permitirá borrar todos los registros de la tabla.
- El if y el else son verificaciones de si se eliminaron los datos o no se eliminaron.

El resultado de la consulta edn el navegador seria:

* Si ahora se selecciona mostrar la tabla, no se mostrara ningún registro.

3.- if(isset($_REQUEST['Insertar'])): Si se llenan los campos que insertan datos y ademas se selecciona el botón insertar, entonces se insertaran registros a la tabla:

- La primera linea luego del if crea una variable con lo que se ingreso en el cuadro de nombre
- La segunda linea luego del if crea una variable con lo que se ingreso en el cuadro de mensaje
- La tercera y cuarta linea son la conexión con mysql y la selección de la base de datos.
- La quinta linea contiene la consulta que ingresa los datos.
- El siguiente if y else son la verificación si la consulta se realizo con exito.

El resultado seria el siguiente:

...y si se presiona mostrar la tabla ahora muestra lo siguiente...



Reflexión: Muchas paginas web redirigen a php, muchas también usan la conexión de php con una base de datos. La conexión a través de php, hace que sea mas fácil para el usuario obtener un dato guardado en una base de datos o ingresar un registro a la base de datos. 




jueves, 25 de septiembre de 2014

Creación y visualización de bases de datos

Creacion y Visualizacion de bases de datos

Autor: Ignacio Molina.
Competencia: Gestión en TI (Nivel 1), Ciencias de la ingeniería básicas.
Palabras Clave: SQL, código, base de datos, clave primaria


Descripción de la actividad: Se emplean diversos códigos en lenguaje SQL, los cuales permitirán crear una base de datos de prueba y revisarla según algunos requerimientos.


Solución: La solución comprende una serie de comandos que deben escribirse en la herramienta de administración de base de datos phpMyAdmin. Se realiza la creación de una base de datos y tabla a elección, que contenga registros los cuales luego serán mostrados con algunos select.

1.- Ingreso a la herramienta: Para ingresar a la herramienta, primero que todo tenemos que tener instalados en nuestro equipo XAMPP o WAMP, cualquiera de los dos nos servirá. Teniendo esto cubierto, y teniendo uno de los dos programas nombrados anteriormente en marcha, entramos a nuestro navegador y tecleamos "localhost/phpmyadmin/" (sin comillas).
Tecleamos nuestra búsqueda.

Pagina principal de phpMyAdmin

2.- Luego de entrar a la pagina principal, nos vamos a la sección de SQL en la barra superior, una vez abierto un cuadro de escritura, tecleamos la orden "create database <Nombre de la base de datos>;", le damos a continuar y esperamos a que nos salga un cuadro verde en el extremo superior, confirmando la correcta ejecución. 
Nuevamente vamos a la ventana de SQL, pero ahora tecleamos la orden "use <Nombre de la base de datos>;" 


Creamos la base de datos
Cuadro de correcta ejecución
Indicamos el uso de esa base de datos
3.- Creamos la tabla: Para crear la tabla se repite el procedimiento de ingresar en SQL, y se digíta el comando mostrado en la siguiente imagen, donde "create table" es fijo y el resto es el nombre de cada columna con su respectivo dato y cuantos caracteres máximo almacenara.
Creamos la tabla, que en este caso se llama empleados


4.- Llenamos nuestra tabla con los siguientes comandos, donde insert into es fijo+ los nombres de los campos que se desean llenar + "values" + los valores que se le darán a cada campo.


5.- Luego que tenemos la tabla, podemos ver sus registros. Para ello escribiremos "select * from empleados", y obtendremos lo siguiente:
Todos los registros de la tabla
6.- Pero no solo podemos ver todos los registros de la tabla, por ejemplo podemos ver solo los nombres, solo los apellidos, o incluso ver los nombres y apellidos. Para este caso veremos los nombres y los apellidos, para ello usaremos: "select nombre, apellido from empleados"
Mostramos todos los nombres y apellidos de la tabla
7.- Pero mostrar solo todos los registros no es algo que sirva mucho, por ejemplo, ¿que pasa si solo queremos ver los nombres de las mujeres de la tabla?. Para ello tenemos where, el cual limita la busqueda solamente a los registros que cumplan con los requisitos. Escribimos "select nombre from empleados where sexo = "femenino";", y el resultado sera el siguiente:
El nombre de todas las mujeres de la tabla
NOTA: where puede no solo limitar con una sola especificación, sino que puede con muchas mas, basta con escribir and (y) u or (o) dependiendo de la situación, y escribir un nuevo delimitador de búsqueda.


Reflexión: Los sistemas de base de datos están presentes en todo sistema comunicacional, ya sea para guardar configuraciones, usuarios o "simplemente", por ejemplo la información de Google que es utilizada diariamente a nivel mundial. Esta actividad ayuda a comprender mejor las bases de datos, y comenzar a saber como realmente se ordena la información dentro de un ordenador.





Evolución de las especies

Evolución de las especies

Autor: Ignacio Molina.
Competencia: Desarrollo de Software (Nivel 1), Ciencias de la ingeniería básicas.
Palabras Clave: Python, programación, ciclos, variables, estructuras de control, parámetros,argumentos,mutación y cruzamiento.

Descripción de la actividad: Se emplea un programa en phyton, el cual tiene por objetivo simular la teoría de evolución de Charles Darwin por medio de la mutación y el cruzamiento de las especies. Todo esto es realizado mediante valores aleatorios y valores iniciales ingresados por el usuario.


Solución: Solución modelada de acuerdo a los requerimientos de la actividad. La solución posee varios pasos, los cuales son descritos a continuación:

1.- El código estaba constituido por cinco partes principales, las cuales eran: Cruzamiento, mutación, verificación, creación de la población inicial y ejecución de mutación o cruzamiento. de los datos.

2.- Verificación: consiste en verificar que los parámetros ingresados (al momento de ejecutar se ingresan los parámetros), fueran correctos. Los tres parámetros que se deben ingresar son: W,Pm,Pc (en ese orden); W debe tener un valor entre 10 y 1000, Pm un valor entre 0 y 1 (mayor a 0 y menor a 1) y Pc un valor similar a Pm. Sin embargo, para que los valores Pm y Pc fueran correctos, debe cumplirse que la suma de ambos sea igual a uno.
Ahora, si los parámetros son incorrectos, se da a conocer una alerta que especifica cual es posible error, con la intención de que el usuario lo corrija. Luego de dar las alertas el programa da por finalizado, dependiendo la finalización de un contador, el cual debe sumar 4 para que el programa continúe su funcionamiento, caso contrario es el de el contador distinto de 4.

Porción de código de la verificación.


2.- Generación de población: La generación de población da inicio en el instante en que termina la verificación y el contador es igual a 4. Aquí por medio de un for, se le asigna a cada uno de los individuos de la población (10 individuos), una cantidad de 15 genes, los cuales pueden ser 1 o 0, todos ellos generados completamente al azar.
Porción de código de la generación y  llenado de la población inicial.



3.- Cruzamiento: Consiste en mezclar los genes de dos individuos, recortándolos desde un punto en especifico (numero random)  y pegándolos en la misma posición de la que fueron sacados en el otro individuo. El cruzamiento se realiza si la variable de elección entre mutación y cruzamiento(numero random) es menor a Pm.
Porción de código de cruzamiento.



4.- Mutación: Consiste en el cambio de genes en especifico de un individuo, los cuales son elegidos con un numero random. Por ejemplo, si el gen era un 1 y es elegido para cambiar, este se convertirá en un 0. Mutación solo se llevara a cabo si la variable de elección entre mutación y cruzamiento es mayor a Pm.
Porción de código de mutación.


5.- Elección mutación-cruzamiento: Es aquí donde se evalúa si la variable probabilidad es mayor o menor a pm, dando paso a la elección entre mutación o cruzamiento. La variable probabilidad es un numero random entre 0 y 1. Ademas en esta sección se puede observar que se imprime como queda la población después de hechos todos los cambios.
Porción de código de elección.

Codigo fuente completo aqui


Reflexión: La programación  puede estar presente en los distintos ámbitos de la vida cotidiana, así mismo puede estar presente en las distintas materias. En esta actividad se puso observar que la programación puede estar presente en una rama muy distinta, como lo es la biología.
En el marco del aprendizaje que nos deja esta actividad, podemos recalcar por su gran presencia en el código, la función random, la cual sirve mucho para realizar pruebas.







domingo, 31 de agosto de 2014

Cajero Automatico

Cajero automático.

Autor: Ignacio Molina.
Competencia: Desarrollo de Software (Nivel 1), Ciencias de la ingeniería básicas.
Palabras Clave: Python, programación, ciclos, variables y estructuras de control.

Descripción de la actividad: Se desarrolla una simulación de un cajero automático, el cual tiene funciones principales tales como: Giros de dinero, Transferencias de dinero entre cuentas asociadas, deposito de dinero y consultas respecto a los fondos.





Solución: La solución del problema debió ser modelada de acuerdo a las especificaciones, y paso a paso. A continuación, se enumerara uno a uno los pasos seguidos:

  1. Funcionamiento continuo del cajero: Para crear un modelo mas realista del cajero automático, se ideo una forma de que estuviera en constante funcionamiento, aun cuando la sesión fuera finalizada. Para ello Implementamos un ciclo, en este caso infinito, que no tuviera un limite de ejecuciones ("while (true)").

  1. Definición y uso de la clave de acceso: En el modelo requerido, no era necesario poseer varios usuarios y distintas claves, ya que estaba orientado solo a un usuario. Por lo tanto, la clave fue definida al comienzo del programa, dentro del ciclo while anteriormente descrito. El modo de ingreso fue mediante un while (en caso de que hubiera errores en la clave, se permitió ingresarla tres veces mas), y si era cierta la clave ingresada, una estructura de control "if", evaluaba si era verdadero y permitía el ingreso.

  1. Al momento de ingresar, el programa evaluara si existe o no una deuda en una de las cuentas del usuario, si esta deuda existe, mostrara una advertencia que tiene la siguiente estructura: "print Usted debe <Monto> <Nombre de la cuenta>.

  1. Luego del ingreso (solo si la clave ingresada coincide con la original), Mostraremos un menú con opciones de operaciones, en esta ocasión, como era un modelo simple, solo usamos "print <N° de la opción> <Descripción>" y alineamos de una manera correcta con algunas funciones de python tales como "center".

  1. Ya seleccionada la operación que se debe realizar, el programa pedirá al usuario, que seleccione una de las tres cuentas disponibles, esta parte se realiza de la misma manera que el punto anterior.

  1. Luego de que se realicen los pasos principales (anteriores), se inicia el verdadero uso del programa, el cual esta dividido en cuatro puntos:
    1. Consulta de saldo: Si el usuario elige una consulta de saldo, un if evaluara la veracidad de la opción, y permitirá el ingreso a la consulta. Luego de ello, tres if colocados en secuencia evaluaran que cuenta se eligió, y mostrara el saldo de la cuenta respectiva.

    1. Giro de dinero: El giro de dinero funciona de una manera similar a la consulta de saldo. Primero el if evalúa la opción de trabajo que eligió el usuario, al hacer esto el programa muestra un menú con opciones de giro, las cuales desembocan en tres if, los cuales evalúan la cuenta elegida. Al entrar al if de la cuenta, una lista de if, evalúa la diferencia entre el monto actual de la cuenta, y el giro que se desea realizar, si la diferencia es mayor a 0 se permitirá el giro, al contrario un else nos mostrara que no existe el saldo apropiado para realizar la transacción. 



    1. La operación de deposita es muy similar a la consulta de saldo, con la diferencia que, aquí al ingresar una cantidad de dinero por teclado, la cuenta automáticamente sumara la cantidad ingresada por teclado.

    1. La transferencia de dinero: Comienza como todas las anteriores con un if evaluando la opción de trabajo ingresada por el usuario, luego otro if anidado evalúa cual es la cuenta desde la que se transfiere el dinero. Al haber realizado esto, el programa solicitara el monto a transferir y a que cuenta se desea enviar, todo evaluado con if. Finalmente se evalúa si la cuenta desde la que se desea sacar el dinero tiene el monto suficiente, si es así, la cuenta anteriormente nombrada perderá el monto a transferir y la cuenta a la que se envía ganara el monto; si no es así, se mostrara un mensaje de saldo insuficiente.

  7. Luego de haber realizado la opción deseada, se consultara si se desea otra operación. Si la respuesta es si se pedirá ingresar nuevamente los datos previos (cuenta y opción a trabajar), si no, se cerrara la sesión y se esperara que se inicie nuevamente.





Reflexión.

El aporte de esta actividad dentro del marco de las competencias que emplea, fue una mayor comprensión de los ciclos y variables de control dentro de un programa. Ademas el mayor conocimiento del lenguaje utilizado (Python).
La actividad que comprende carias lineas de código, nos demuestra que ellas no solo son símbolos y cosas extrañas que están dentro de la programación, si no que pueden conllevar a grandes cosas, que son utilizadas diariamente, y son indispensables, como el cajero automático.