lunes, 14 de noviembre de 2011

Laboratorio Arreglos y ciclos en java


Autor: Gabriel Pereira
Competencia: Ciencias de la Ingeniería.
Palabras Clave: Arreglos,Java,if,while,for.

Descripción: 
Esta actividad de laboratorio consiste en crear dos clases:
1.- Una que define diversos métodos para crear, llenar y manipular un arreglo unidimensional
2.- Otra cuya única finalidad es invocar dichos métodos a fin de comprobar su correcto funcionamiento

La primera clase tendrá como nombre arrUni, la segunda tendrá como nombre usarrUni.

La clase arrUni estará compuesta de los siguientes métodos:
1.- Constructor, recibe como parámetro la dimensión del arreglo
2.- LlenaAleatorio, recibe un lí­mite inferior y uno superior para el rango aleatorio y entonces llena
      el arreglo con valores aleatorios entre esos límites(10 y 90)
3.- Muestra, que muestra el contenido del arreglo en una fila de pantalla
4.- Menor, que entrega el menor valor contenido en el arreglo
5.- Mayor, que entrega el mayor valor contenido en el arreglo
6.- Invierte, que invierte el contenido del arreglo
7.- Suma, que entrega la suma de todos los elementos del arreglo
8.- Busca, que recibe un entero y entrega verdadero o falso, según si está o no en el arreglo
9.- Par, muestra la cantidad de números  pares dentro del arreglo
10.- Impar, muestra la cantidad de números impares dentro del arreglo
11.- Multiplicar, recibe un número y entrega la multiplicación de cada número del arreglo con el digito
12.- Llenar asc, llena un arreglo desde un numero x hacia arriba (en este caso desde el menor 10)
13.- Llenar desc, llena un arreglo desde un numero x hacia abajo (en este caso desde el mayor 90).

Código Fuente:
Clase arrUni:
public class arrUni
{
    private int N;
    private int M[];
    private int C[];  
    public arrUni(int n)
    {
        this.N = n;
        this.M = new int[N];
        this.C = new int[N];
    }
   
    public void LlenaAleatorio(int lbajo,int lalto)
    {
        for(int i=0;i < N;i++)
        {
            M[i] = lbajo + (int)(Math.random() * (lalto-lbajo+1));
        }
    }
   
    public void MostrarArreglo()
    {
        System.out.print("Arreglo");
        for (int i = 0;i<N;i++)
        {
            System.out.print("  -  " + M[i]);
            System.out.println();
        }
    }
    
    public int MenorNro()
    {  
        int menor = 90;
        for(int i=0; i<N;i++)
        {
            if(M[i] < menor)
            {
                menor = M[i];
            }   
        }
        return menor;
    }
   
    public int MayorNro()
    {  
        int mayor = 10;
        for(int i=0; i<N;i++)
        {
            if(M[i] > mayor)
            {
                mayor = M[i];
            }
        }
        return mayor;
    }
     
    public void Invertir()
    {
        int i=0; int j=N-1;
        int aux=0;
        while (i<=j)
        {
            aux = M[j];
            M[j] = M[i];
            M[i] = aux;
            i++; j--;
        }   
    }  
   
    public int SumaArreglo()
    {
        int suma = 0;
        for(int i= 0;i<N;i++)
        {
            suma = suma + M[i];
        }
        return suma;
    }
   
    public void BuscaNro(int b)
    {
        for(int i=0;i<N;i++)
        {
            if (M[i] == b)
            {
                System.out.println("El numero " +b+ " se encontro en la posicion" +M[i]);
                break;
            }
            else
            {
                System.out.println("El numero no se encontro");
                break;
            }
        }
    }
   
    public int Par()
    {
        int par = 0;
        for(int i=0;i<N;i++)
        {      
            if(M[i] % 2 == 0)
            {  
                par = par +1;
            }
        }
        return par;
    }
     
    public int Impar()
    {
        int impar = 0;
        for(int i=0;i<N;i++)
        {      
            if(M[i] % 2 == 1)
            {  
                impar = impar +1;
            }
        }
        return impar;
    }
   
    public void MultiplicaNro(int m)
    {
        System.out.print("Los nros multiplicados por " +m+ " Son: ");
        for(int i=0;i<N;i++)
        {
            System.out.print("  -  " + M[i]*m);
            System.out.println();
        }
    }
   
    public void LlenaAsc(int inicio)
    {
        System.out.print("Listado Ascendente");
        for(int i=0;i<N;i++)
        {
            M[i] = inicio + i;
            System.out.print("  -  " + M[i]);
        }
        System.out.println();
    }
   
    public void LlenaDes(int inicio)
    {
        System.out.print("Listado Descendente");
        for(int i=0;i<N;i++)
        {
            M[i] = inicio - i;
            System.out.print("  -  " + M[i]);
        }
    }
}

Clase usarUni:

public class usarrUni
{
    public static void main(String args[])
    {
        arrUni miArreglo = new arrUni(10);
        miArreglo.LlenaAleatorio(10,90);
        miArreglo.MostrarArreglo();       
        System.out.println("El Menor numero es:" + miArreglo.MenorNro());
        System.out.println("El Mayor numero es:" + miArreglo.MayorNro());
        miArreglo.Invertir();
        System.out.println("La suma de sus elementos es:" + miArreglo.SumaArreglo());
        miArreglo.BuscaNro(28);
        System.out.println("La cantidad de Pares es:" + miArreglo.Par());
        System.out.println("La cantidad de Impares es:" + miArreglo.Impar());
        miArreglo.MultiplicaNro(2);
        miArreglo.LlenaAsc(10);
        miArreglo.LlenaDes(90);
    }
}


Captura de aplicación:

 Resumen:

En conclusión se ideo una serie de métodos para resolver distintos problemas matemáticos unos más complejos que otros para los cuales usamos los distintos ciclos que se tienen a mano como if, while y for además del uso de variables y lo principal en esta actividad el arreglo unidimensional con el que trabajamos, este tiene como buen provecho el reforzar el uso de arreglos y repasar lo importante que son los ciclos a la hora de programar.

Informe Física


Autor: Gabriel Pereira
Competencia: Ciencias de la Ingeniería.
Palabras Clave: MRU, MRUA, física, robótica.

Descripción: 
En el presente informe observaremos experimentos de física relacionados con el movimiento rectilíneo uniforme, en la cual nuestro equipo de trabajo se encargo de poner en práctica algunas de las propiedades de la física con un robot lego, programado inicialmente con un código NXC entregado por el profesor guía, ¿ Que es el MRU?  Podemos decir  que un objeto en este caso nuestro robot, realiza un movimiento recto con aceleración nula, lo que quiere decir que su velocidad es constante en el tiempo, pero además trabajamos con el MRUA en el que un objeto realiza un movimiento recto pero estando sometido a una aceleración constante, con esto podemos decir que nuestro objetivo principal es observar e interiorizarnos más en el tema de la combinación de la física con la robótica , además retratar lo aprendido a través de gráficos en Excel de  cómo se comporta cada uno de estos movimientos luego de ponerlos en práctica con nuestro robot. Para poder graficar tuvimos que calibrar el sensor de luz para que reconozca la línea negra al pasar por encima, luego manualmente tuvimos que medir la distancia entre cada una de las líneas, el robot por su parte al pasar por sobre cada línea entrega el tiempo en milisegundos de cada punto, había que hacer una relación distancia vs tiempo y transformamos a metros por segundo para poder graficarlo.                                                                                                                                

OBJETIVOS

Determinar la función de distancia vs tiempo para el MRU (movimiento rectilíneo uniforme) del robot
  • Determinar la velocidad de su robot para alguna potencia especifica ingresada en su programación en su MRU
  • Determinar la función de distancia vs tiempo para el MRUA (movimiento rectilíneo uniforme acelerado) del robot
  • Determinar la aceleración de un robot cuando va aumentando su velocidad y la distancia
  • Utilizar correctamente programas tales como Excel, Open, Office cal, etc...

En esta parte del trabajo nos reunimos como grupo para poder realizar la actividad completa y de buena manera para obtener los resultados de los objetivos, poniendo cada uno de nuestra parte para que la actividad fuera correcta y ordenada, cada uno de los integrantes del grupo estuvo en contacto con el código del programa, los experimentos en la mesa de trabajo, la parte de medida, la graficacion en el computador y sacando cada uno sus conclusiones de dicho trabajo.

HERRAMIENTAS

Medición: Comparar una magnitud con otra de su misma especie

Movimiento: Corresponde al cambio continuo de posición.

Movimiento Rectilíneo: Se habla de este cuando la trayectoria del cuerpo es una línea recta. Nosotros en este laboratorio trabajaremos con este movimiento viendo el comportamiento de un cuerpo y graficándolo a la vez.

Posición: Es el lugar donde se encuentra un objeto determinado. Este varía de acuerdo al movimiento, tiempo, velocidad, etc. La posición x de un cuerpo se relaciona con el tiempo t mediante una función x = f (t).

Tiempo: Es la unidad con la que sabremos la cantidad de segundos(s) que puede demorar un cuerpo en moverse de una posición a otra, de acuerdo a distintos factores.

Desplazamiento o Distancia: Corresponde a la distancia recorrida por el cuerpo en un tiempo determinado.
Por ejemplo en un tiempo el cuerpo se encuentra en una posición x, luego en otro instante el cuerpo se encuentra en otra posición. Para calcular la distancia debemos restar la posición final(df) con la inicial(di) logrando el intervalo medio(dm) entre estas y para calcular el tiempo que demoro, haremos el mismo calculo restándole el tiempo inicial(ti) al tiempo final(tf).  dm = df – di        tm =  tf - ti        
Velocidad: Corresponde al desplazamiento del cuerpo por unidad de tiempo. Para calcular la velocidad media (vm) por ejemplo debemos calcular al igual que anteriormente la distancia media (dm) del cuerpo y el tiempo medio(tm), al tener estos datos usaremos la fórmula de velocidad.                            v o vm  = dm  / tm     (distancia partido por tiempo).

Aceleracion: Se refiere al cambio de velocidad en un periodo de tiempo.Para calcular esta magnitud
Debemos usar la velocidad media dividida por el tiempo medio de esta manera lograremos deducir la aceleración que tiene el cuerpo en metros / segundos cuadrados (m/s2).

Movimiento rectilíneo uniforme
Es el que su trayectoria es una línea recta.
El MRU se caracteriza por:
a) Movimiento que se realiza en una sola dirección en el eje horizontal.
b) Velocidad constante; implica magnitud y dirección inalterables.
c) La magnitud de la velocidad recibe el nombre de rapidez.
d) Este movimiento no presenta aceleración (aceleración=0).



Donde   X0    es la posición inicial, V es la velocidad constante y t es el delta de tiempo.

Movimiento rectilíneo uniforme acelerado

Podemos calcular la aceleración de un móvil

     Siendo <a> la aceleración media del móvil.

PLANES DE ACCION

Para poder lograr los objetivos de este laboratorio fue necesario disponer de los siguientes materiales:

1.    -Robot Lego NXT.
2.    -Cronómetro.
3.    -Cinta para marcas.
4.    -Sensor de luz.
5.    -Huincha de medir.
6.    -Computadora con Office (Excel).
7.    -Calculadora.
8.    -Programa pru_vel para NXT (entregado por profesor).
9.    -Programa pru_acel para NXT (entregado por profesor).

En una plataforma blanca estaban las huinchas que nos servían para marcar la plataforma y que el robot los reconociera y los mostrara en pantalla en milisegundos.
Implementábamos en nuestro robot el programa entregado por el profesor que era para medir la velocidad, lo colocábamos en la posición inicial, el cual al finalizar nos mostraba cuanto se demoraba en que el sensor de luz detectara las líneas negras puestas en la plataforma, luego mediamos la distancia entre cada línea y calculábamos la ecuación para determinar la velocidad del NXT velocidad = distancia (m)/tiempo(s).


tiempo(s)
distancia(m)
0
0
4,42
0,35
8,86
0,7
 13,3
1,05
17,76
1,4

Potencia 30




Luego en la siguiente fase con otro código programado en NXC entregado por el profesor calculábamos la aceleración del NXT en la misma plataforma y lo analizábamos con la ecuación para MRUA
X (t)= 1/2at^2+vt+x



tiempo(s)
distancia(m)
0
0
3,512
0,346
5,652
0,704
7,312
1,053
8,756
1,403
9,987
1,753




CONCLUSION

Los resultados que obtuvimos fueron positivos ya que en la primera actividad
que realizamos, la cual era identificar el MRU y la velocidad del robot no tuvimos problemas y la pudimos completar satisfactoriamente.
En la actividad  2 en la cual utilizamos la ecuación MRU (v= d/t; d=v*t; t=d/v, donde v=velocidad; d=distancia o desplazamiento; t=tiempo) con la cual demostramos a qué lugar llegó nuestro robot en un tiempo determinado.
En la actividad 3 ocupamos la misma estructura que utilizamos en la actividad 1 pero con un nuevo programa con la ecuación de MRUA (x (t)= 1/2at^2+vt+x) y así determinamos la aceleración de nuestro robot, en este caso la potencia de programación del NXT era 40.
En la actividad 4 y última de este laboratorio, realizamos la ecuación de MRUA,
y pudimos demostrar que el resultado que entrego la ecuación era el mismo resultado al que llegó el robot una vez que lo medimos y resulto estar perfecto.
Siempre y cuando la velocidad  y la aceleración se mantengan constantes, nosotros podremos calcular en qué posición (lugar) se encontrará el objeto en un determinado tiempo.
Cabe decir que el desarrollo de la actividad en su totalidad fue observada por el profesor durante el transcurso de la clase, fue positivo el desarrollo de la actividad ya que igual es entretenido mezclar el conocimiento con la robótica además es más interactivo y entretenido verlo de esta manera que estar siempre en cátedras sobre el mismo tema loa preciamos de mejor manera y adoptamos mucho más fácil el conocimiento de este.
.
BIBLIOGRAFIA