jueves, 15 de diciembre de 2011

pitfinder

Autor:Cristian Lara
Competencia:Aprendizaje Autónomo.
Palabras claves:lego,nxc

 Descripción de la Actividad

Un robot recorre la meseta de una montaña, y su misión es detectar las alturas de los precipicios de ésta, información que servirá para escaladores, paracaidistas, deportes extremos en general.

Solución.

Primer paso es escribir el pseudocodigo para encontrar la solución.

CERCA 10
altura[4]
i=0
sub medir()
{Obtener altura según el sensor de proximidad
Guardar el valor de la altura en un arreglo
i++
retrocede y gira en un ángulo random
}
sub escribir()
{crear un archivo
escribir los datos del arreglo en el archivo
mostrar los datos del archivo por pantalla
}
tarea detectar()
{Mientras(i<=3)
{avanza
Si(sensor de proximidad > CERCA)
{llamar a subrutina medir()
} //cierre de Si
} // Cierre del Mientras
Llamar a subrutina escribir()
} // Cierre de la tarea detectar
tarea principal ()
{ejecutar tarea detectar
Encender sensor de proximidad
}


Una vez que escribimos la solución pasamos al código.

#define CERCA 10 // Variable usada para definir un valor para el sensor de Proximidad mida, en cm.
int altura[4]; // Es el arreglo de tipo entero para que se guarden los valores cada vez que detecte una medición del precipicio.
int i=0 // Esta variable se usó para guarda el valor en valor entregado por el sensor en la primera posición.
int a=0; // Para que se pueda recorrer el arreglo, mostrando todos los valores.
int giro; // Variable que se usará para el giro aleatorio.
sub medir() // sub modo medir.
{
Off(OUT_AC); // Apagar motores por 3 segundos.
Wait(3000);
altura[i]=SensorUS(IN_2);// Acá es donde se guarda el valor de la medición en la posición 0 del arreglo.
i++; // Se le suma uno a i para que guarde en la siguiente posicion del arreglo.
OnRev(OUT_AC,75);// Retroceso por 3 milisegundos con potencia 75
Wait(300);
OnRev(OUT_A,75);// Las dos instrucciones es para realizar un giro con un valor aleatorio.
OnFwd(OUT_C,75);
giro=Random(400)+200; // Como anteriormente dicho, el valor del giro es aleatorio.
Wait(giro); // el valor esta entre 400 y 600 milisegundos.
}
sub escribir() // sub modo escribir
{ int fsize; // entero para el tamaño del archivo.
bool eof = false; // booleano para que al finalizar siempre muestre en pantalla
int i=0;// Valor inicial del arreglo, posición 0.
int x=0,y=0; // Variables que indican las coordenadas de la pantalla del ladrillo.
byte punteroArchivo; // Usado para acceder al archivo.
string cadena;// Donde se guardará el texto que se mostrará en pantalla.
int pos=1; // entero para que en pantalla muestra el número de precipicio
byte bytesEscritos;
CreateFile("MedicioneS.txt", 1024, punteroArchivo); // Creación del archivo
for(i=0; i < ArrayLen(altura); i++) { // Todo esto nos permite recorrer TODO el arreglo.
string alturax = NumToStr(altura[a]); // Se pasa el valor entero del arreglo a String para poder mostrarlo, posición inicial(a=0)
string posicion = NumToStr(pos);// Al igual que el anterior se pasa a String, muestra el numero de precipicio que corresponde la medición.
cadena = StrCat("Pre.",posicion,"==>",alturax,"m");// Lo que se muestra en pantalla. (Pre.1 ==> 94 m por ejemplo)
a++; pos++;// Sumar uno a y pos lo que nos dice que se avanza en la posición del arreglo y numero de precipicio.
WriteLnString(punteroArchivo, cadena, bytesEscritos); // Escribir en el archivo la cadena.
} // Cierre del for
CloseFile(punteroArchivo); // Cerrado del archivo
if(OpenFileRead("MedicioneS.txt", fsize, punteroArchivo) == NO_ERR) // Aqui es donde se abre el archivo que antes se creó.
{
while (eof == false) // Mientras sea eof igual a false
{if(ReadLnString(punteroArchivo,cadena) != NO_ERR) eof = true; // Leer el contenido del archivo que se guardo en cadena.
TextOut(x,y,cadena);// Mostrar en pantalla el texto(medición) que contiene cadena.
y+=10; // Usado para que en la coordenada y aumente en 10 lo que muestra los valores de la mediciones sin errores como sobre escritura en la pantalla.
Wait(2000); // Por 2 segundos.
} // Cierre del while.
} //Cierre if
} // Cierre del sub modo
task detectar() // Tarea detectar.
{
while(i<=3) // Mientras i sea menor o igual a 3, lo que nos garantiza que realiza las 4 mediciones.
{
OnFwd(OUT_AC,70); // Avanzar con una potencia 70
if(SensorUS(IN_2) > CERCA) // Si el sensor de proximidad es mayor que Cerca
{
medir(); // Llamar al sub modo medir.
} // Cierre del if
} // Cierre del While
escribir(); // Llamado al sub modo escribir.
} // Cierre de la tarea detectar
task main () // Tarea Principal.
{
Precedes(detectar);// Usado para que la tarea detectar trabajen paralelamente al main.
SetSensorLowspeed(IN_2); // Encender Sensor de Proximidad, Puerto numero 2
}

Video de la actividad realizada
 

Reflexion.

Respecto al aprendizaje autónomo en esta actividad, se da en buscar información de como poder crear un archivo y poder escribir sobre él, además de aprender las diferentes alturas que el robots puede lograr detectar.





Bonus point 6

Autor: Cristian Lara
Competencia:Aprendizaje Autónomo.(Nivel 1)

Descripcion de la Actividad

Diseñar una excepción propia.

Solución

2 ->[Proceso]-> Felicitaciones has ganado/lo sentimos Has perdido
A ->[Proceso]-> a no es un numero 
-1 ->[Proceso]-> esta fuera de rango
S ->[Proceso]-> s no es un numero 
@@ ->[Proceso]-> @@ no es un numero
2+2 ->[Proceso]-> no es un numero 
0 ->[Proceso]-> Felicitaciones has ganado/lo sentimos Has perdido 
1 ->[Proceso]-> Felicitaciones has ganado/lo sentimos Has perdido
2 2 ->[Proceso]-> 2 2 no es un numero
2A ->[Proceso]-> 2A no es un numero 
1-1-1 ->[Proceso]-> 1-1-1 no es un numero
:] ->[Proceso]-> :] no es un numero 
MM ->[Proceso]-> MM no es un numero
___->[Proceso]-> ___ no es un numero
¿? ->[Proceso]-> ¿? no es un numero
34 ->[Proceso]-> 34 esta fuera de rango


Paso 2: Análisis y Diseño


Primero declaramos una variable en la cual se guardara el dato que el usuario nos dará, en este caso “numeroAleatorio” que con el “Math.random” nos ayudara a generar un número aleatorio que su rango girara del 1 al 30.
Si el usuario ingresa un dato incorrecto al solicitado el software arrojara algun tipo de error diciendo al usuario su dato es incorrecto.







numeroAleatorio = (int)(Math.random()*31);




Paso 3: Especificación en DA


























































Paso 4: Implementación en Java

@author Cristian
* @version 1.01
*/
import java.util.*;
public class RuletaRusa
{
public static void main(String[]args)
{
int numeroAleatorio;
int numeroDefinitivo = 0;
String numeroIngresado = null;
String mensaje = null;
numeroAleatorio = (int)(Math.random()*31);
Scanner leer = new Scanner(System.in);
System.out.println("ingrese numero de 1 a 30");
try
{
numeroIngresado=leer.nextLine();
numeroDefinitivo = Integer.parseInt(numeroIngresado);
rango(numeroDefinitivo);
if(numeroDefinitivo == numeroAleatorio)
{
System.out.println("Numero Ingresado: "+numeroDefinitivo);
System.out.println("Numero Aleatorio: "+numeroAleatorio);
System.out.println("Felicitaciones has ganado");
}
else
{
System.out.println("Numero Ingresado: "+numeroDefinitivo);
System.out.println("Numero Aleatorio: "+numeroAleatorio);
System.out.println("lo sentimos Has perdido");
}
}
catch(MiExcepcion ex)
{
mensaje = ex.getMessage();
System.out.println(mensaje);
}
catch(NumberFormatException ex)
{
mensaje = ">> El/los caracter(es): "+numeroIngresado+" no es un numero <<";
System.out.println(mensaje);
}
}
public static void rango(int numero) throws MiExcepcion
{
if(numero <0 || numero >30)
{
throw new MiExcepcion(">> El Numero: "+numero+" esta fuera de rango <<");
}
}
}




Capturas
















Reflexión


Gracias a esta practica actividad la cual tuve que investigar sobre las excepciones y luego aplicarlas, pode lograr hace una excepción propia sin ningún problema


Update y delete

Autor: Cristian Lara
Competencia: Comunicación Oral y Escrita(nivel 1)
Palabras claves: sql

Descripción de la actividad 
 Diseñar y presentar en síntesis Update & Delete.


Solución
 Esta vez utilizaremos la tabla película para la las sintaxis DELTE & UPDATE





























DELETE

DELETE: Borra los registros de tbl_name que satisfacen la condición dada por where_definition, y retorna el número de registros borrados.

SINTAXIS DE DELETE: Utilizamos esta sentencia para eliminar datos cuya sintaxis básica es la siguiente;

DELETE FROM Nombre_Tabla [WHERE Condición]



delete from peliculas where tipopelicula = ‘ninos’ or ‘horror’ ;








Si realiza un comando DELETE sin cláusula WHERE se borran todos los registros. Una forma más rápida de hacerlo, cuando no quiere saber el número de registros borrados, se usa TRUNCATE TABLE.

DELETE from peliculas where preciopelicula >= 300:








UPDATE

SINTAXIS UPTADE: La sintaxis UPDATE es una de las más utilizadas en una base de datos, se conoce como la sintaxis de actualización de datos, ya que es común que la tabla de datos contengan errores y que la información de actualice a medida que pasa el tiempo.

La sintaxis básica de UPDATE es:

UPDATE Nombre_tabla SET Nom_columna=expresión WHERE condicion ;
 
*Set: Le indica a MYSQL cuáles son las columnas a modificar.

*WHERE: Se usa para seleccionar reglones en la mayoría de los casos.


UPDATE peliculas SET preciopelicula = 150.00:










Para actualizar un registro podemos utilizar WHERE de la misma manera que con el Delete:
Update peliculas set preciopelicula = 500 where nombrepelicula = 'becool':









UPDATE: Puede también actualizar un subconjunto de registro como el que vemos a continuación;

Update peliculas set preciopelicula = 333 where tipopelicula ='accion':













El comando UPDATE actualiza columnas en registros de tabla existentes con nuevos valores. La cláusula SET indica qué columna modificar y los valores que puede recibir. La cláusula WHERE, si se da, especifica qué registros deben actualizarse. De otro modo, se actualizan todos los registros. Si la cláusula ORDER BY se especifica, los registros se actualizan en el orden que se especifica. La cláusula LIMIT es el límite de registros a actualizar.
Si usa la palabra clave IGNORE, el comando de actualización no aborta, incluso si ocurren errores durante la actualización. Los registros que presenten conflictos de clave duplicada no se actualizan. Los registros cuyas columnas se actualizan a valores que provocarían errores de conversión de datos se actualizan al valor válido más próximo.

Reflexión

Gracias a estos comandos que existen en sql poder actualizar y eliminar datos sin tener la necesidad de poder crear una tabla nueva si nos equivocamos en ingresar los datos.

Soporte Informatico


Autor:Cristian Lara
Competencia:Comunicación Oral y Escrita(Nivel 1)
Descripcion de la Actividad.
 
Discutir y/o analizar las tareas de un departamento de soporte informático en una empresa u organización.
 
Solucion.
 
Seguridad

  • žEl departamento de seguridad es el encargado de proteger los  datos confidenciales como lo son los trabajadores de planta y las bases de datos de los pacientes. 
  • También se preocupan de tener redes alternativas en caso de cortes de luz, servidores espejo que consisten  en un servidor web que contiene una copia de todos los archivos del servidor original. 
  •  Poseen acceso a las bases de datos, estas se usan cuando el servidor es accedido por muchísimos usuarios simultáneamente . 
 
žDepartamento que consta de proporcionar seguridad tanto a las bases de datos ,datos confidenciales, como insumos y/o Trabajadores de la planta.
 
žPara ello se destaca:
žA)Redes Internet/Intranet
žb) Firewall (Cortafuego)-Permite proporcionar seguridad al momento de algún ataque a la clínica y dar seguridad para proteger datos confidenciales.
žC)Redes alternativas (cortes de luz)
žD)Servidores-servidores espejos 
 
 
 
Bases de datos.
 
A partir del avance del tiempo las bases de datos toma más importancia en cualquier empresa de trabajo como en nuestro caso un hospital donde su labor es simplificar las cosas en lo que se refiere al manejo de la gran cantidad de  datos que pueden existir en un entorno laboral, se destaca también el uso buena interfaz grafica con los datos en forma ordenada.
 
Muchos son los datos que se pueden ingresar en una base de datos, algunos de ellos es la información personal sobre el paciente como lo son los nombres, edad, dirección, la previsión medica, como también el ingreso y salida del paciente acompañado de su receta medica, digitada en la base.
 

 
 
 
 
 
 
 
 
 
 
 
La base de datos producen un fácil manejo de las datos siendo muy fácil y rápido acceder a los datos que poseen. 
 
Mantenimiento
 
  • žEl Departamento de Mantenimiento se encarga de proporcionar oportuna y eficientemente, los servicios que requiera la empresa que posee este.
  
UN BUEN MANTENIMIENTO
 
  • žEvitar, reducir, y en su caso, reparar, las fallas sobre los bienes precitados
 
  • žPlanear y programar en forma conveniente la labor de mantenimiento.
  • žEvitar detenciones inútiles o paros de máquinas.
 
  • žEvitar accidentes.
 
  • žEvitar incidentes y aumentar la seguridad para las personas. 
 


 
 
 
 
 
 
 
 
 
 
ž 
Con el buen mantenimiento se busca
 
  • Conservar en buen estado en los dispositivos de seguridad y cuidar de que cumplan las normas de seguridad
  • žBalancear el costo del mantenimiento.
 
  • žProporcionar servicios de aseo y limpieza a toda la fabrica o empresa.
 
 
  • žAlcanzar o prolongar la vida útil de los bienes. 
ž 
El departamento de mantenimiento a su vez divide sus responsabilidades en varias por ejemplo:
Sección Mecánica:
žConformada por aquellos encargados de instalar, mantener, y reparar las maquinarias y equipos mecánicos.
Sección Eléctrica:
žConformada por aquellos encargados de instalar, mantener, y reparar los mandos eléctricos, generadores, subestaciones, y demás dispositivos de potencia.
Sección Electrónica:
žConformada por aquellos encargados del mantenimiento de los diversos dispositivos electrónicos.
Sección Informática:
žTienen a su cargo el mantener en un normal desarrollo las aplicaciones de software.
ž
 
  Reflexion
 
Se ve claramente que gracias a los distintos departamentos de informática se puede tener funcionando de una manera óptima una empresa