domingo, 21 de octubre de 2012

Actividad de Programación I


Autor: Benjamín Navarrete O.
Competencia: Aplica las Ciencias de la Ingeniería
Palabras Clave: String, Ejercicio, Java, Intercalar, Cadenas



Descripción de la Actividad


 Hola ! Esta actividad pertenece a Programación I de primer año del primer semestre de la carrera Ingenieria civil informática, ejercida en la Universidad Católica de Temuco.
El ejercicio que les voy a mostrar mas adelante se los mostraré para que vean como se puede interactuar de ésta, y de muchas maneras con string (cadenas). El enunciado del ejercicio es el siguiente: "  Cree un programa en el cual se ingresen 2 palabras por teclado,  para que después el programa intercale esas palabras. Ej :  palabra 1: asdf
                                                                                     palabra 2 : qwer

                                                                                     Resultado: aqswdefr


 Dar algunos ejemplos más claros serian algo asi como:

hola, amigo -> [P] -> haomliago

hablando , corriendo -> [P] -> hcaobrlrainednodo

pepe, gumercindo -> [P] -> pgeupmeercindo

ubicando la primera letra de la primera palabra, seguido de la primera letra de la segunda palabra, despues siguiendo con la segunda letra de la primera palabra y con la segunda letra de la otra palabra y así sucesivamente.


un pseudocódigo para desarrollar el problema sería asi:



escribir "ingrese primera palabra"
leer palabra1
escribir "ingrese segunda palabra"
leer palabra2

si(largo palabra1 es = al largo palabra2){
  sino si( largo palabra1 > largo palabra2){

     reemplazo = (valor absoluto del largo de la palabra1) - (largo palabra2)
para( indice = 0 Indice hasta valor de reemplazo con paso 1 hacer){
  palabra2 = palabra2 + "_"
       }
} sino{  reemplazo = (valor absoluto del largo de la palabra1) - (largo palabra2)
para( indice = 0 Indice hasta valor de reemplazo con paso 1 hacer){
  palabra1 = palabra1 + "_ "
    }

}

largo = largo palabra1

para( indice = 0 Indice hasta valor de largo con paso 1 hacer){
 palabra nueva = palabra nueva + carácter "indice" palabra1 + carácter "indice" palabra2
 }

palabra nueva  = palabra nueva.reemplazar "_" por " "

escribir palabra nueva


y el código en java sería así:



import java.util.Scanner;
public class Ejercicio5_IntercalarPalabra {
    public static void main(String[] args) {
        
        Scanner leer = new Scanner(System.in);
        String palabra1, palabra2, nuevo ="";
        int largo, reemplazo;
       
        System.out.println("Ingrese dos palabras");
        System.out.println("Palabra 1");
        palabra1 = leer.nextLine();
        System.out.println("Palabra 2");
        palabra2 = leer.nextLine();
        
        if(palabra1.length() == palabra2.length()){
        }else if(palabra1.length() > palabra2.length()){
            reemplazo = Math.abs((palabra1.length() - palabra2.length()));
            for(int i = 0; i < reemplazo;i++){
                palabra2 += "_";
            }
        }else{
            reemplazo = Math.abs((palabra1.length() - palabra2.length())); 
             for(int i = 0; i < reemplazo;i++){
                palabra1 += "_";
            }
        }
            largo = palabra1.length();
        
        for (int i = 0; i < largo; i++){
            nuevo += palabra1.charAt(i) + "" + palabra2.charAt(i);
            
        }
        nuevo = nuevo.replaceAll("_", "");
        System.out.println(nuevo);
        
    }
}


reflexión


Para mí esta actividad sirvió para ver cómo se puede interactuar entre Strings como en este caso intercalando dos palabras, también en la forma de analizar el problema, viéndolo desde muchos puntos de vista, ya que éste se puede escribir de muchísimas maneras, y todas llegando al mismo resultado, todo dependiendo de la forma de reflexionar y de pensar de la persona que está programando. Por eso esta actividad también sirve para ver la diversidad o de las miles de maneras que se puede crear un programa con distinto código o siguiendo una misma lógica. Ejercicios como éstos son los que nos hacen ejercitar nuestra mente de ingenieros y pensar de una manera más analítica al momento de hacer las cosas o de la toma de decisiones.

Está abierta la posibilidad para que puedan consultar todas sus dudas :)
       

Instalación de Windows Server 2003 como caso de Estudio


Autor: Benjamín Navarrete O.
Competencia: Gestión en Tecnologías de la Información
Palabras Clave: Windows, Server, Instalación, Sistema, Operativo, Imágenes




Descripción de la Actividad

La siguiente actividad se basa en primer lugar, instalar un sistema operativo paso a paso mediante imágenes para así poder aprender a utilizar distintos sistemas orientados a las metodologías de trabajo. En segundo lugar, el funcionamiento de Windows Server 2003 como tal, siguiendo una serie de pasos, los cuales eran:


1. Instalar Window 2003 server.

2. Probar la creación de usuarios y grupos (cada miembro del grupo es un usuario), identificar los distintos grupos de usuario existentes en el sistema e indicar la funcionalidad de cada un de ellos.

3. Revisar la administración de servicios del sistema (procesos en segundo plano), indicar como se configuran los servicios en el sistema.

4. Revisar los permisos y atributos de archivos: Probar estos permisos y atributos con los usuarios y grupos creados.

5. Revisar y documentar los principales aspectos de la configuración de Red del sistemas.

6. Revisar el visor de sucesos y documentar cada uno de sus reportes.


cada paso con sus respectiva Screenshot.


Solución

Instalación del Sistema operativo Mediante un emulador de sistemas operativos llamado VirtualBox



Desarrollo de las Actividades















Reflexión

Al finalizar esta primera actividad refiriéndose a instalación de sistemas operativos, nos dimos cuenta de que es fundamental comprender cada función que abarca el trabajo de un ordenador y su respectivo SO, en este caso un servidor. También nos dimos cuenta de que su instalación no fue compleja ya que poseíamos conocimiento previo y similar de instalación de un sistema operativo Windows, además de su comprensible guía de instalación e interfaz que lo hace aún más fácil de operar.

   Nuevamente los invitamos a aportar alguna idea o a comentarnos de algo que los dejo con alguna duda :)
       

domingo, 9 de septiembre de 2012

Circuito Millonario

Autor: Benjamín Navarrete
Competencia: Desarrollo de Software (Nivel 1)
Palabras Clave: Robot, NXC , lego , circuito ,sensores ,Subrutinas

Descripción de la Actividad


La actividad consistía en que debíamos programar un robot explorador, que sea capaz de recorrer una pista de obstaculos establecida por un concurso de televisión y competir contra los otros robots que participen para obtener la mayor cantidad de puntaje. La pista constaba de 3 secciones en las que se deben realizar diferentes funciones:
1. Primero tenemos un laberinto el cual se tiene que superar con éxito.
2. Luego una ruta establecida por señales especiales en el suelo que deben ser seguidas,
3. Y finalmente tenemos una sección en la cual los robots deben detectar la mayor
cantidad de puntos de bonificación antes de que el robot impacte 3 veces en los
obstaculos de la pista.

Solución


 Para comenzar plantearemos el Pseudocódigo de nuestra solución:



Variables  :
Avanza, utilizar (x).
Giro  en grados ( y ).
Sensores :
Luz (a) , Tacto (b), Ultrasonido (c)
Task main (){
El robot  x  , se activa (b) detectando la pared del laberinto  
Luego el  robot ( y,90) a la izquierda ,(X) detectando la pared con (c),
Luego (y,90) a la derecha , (x)  detectando la ultima pared con (c),
(y,90) a la derecha , (x) hasta llegar a la línea negra activando (a)
Detecta el umbral correspondiente y luego (x)  hasta terminar la línea negra,
Luego ( y ) a la izquierda, activando nuevamente el  (a) y luego detecta el color blanco y
(x)  además activa (b) para detectar la paredes de la pista y asi (x) aleatoriamente hasta encontrar los círculos negros  e ir sumando puntos cada vez que suma puntos suena un pito  , el programa finaliza una vez que se hayan sumando los puntos necesarios.




Y el código quedó de esta manera:

#define UMBRAL 40
#define CERCA 10//cm
//subrutina laberinto
sub laberinto () {
      SetSensorTouch(IN_1);
     SetSensorLowspeed(IN_4);

                             //primer recorrido
                 OnFwd(OUT_BC,50);
                 Wait(900);
                 while(SensorUS(IN_4)> CERCA);
                 OnFwd(OUT_B,35);  // giro en su propio eje
                 OnRev(OUT_C,30);
                 Wait(800);
                 //segundo reccorido
                 OnFwd(OUT_BC,40);
                 Wait(500);

                 while(SensorUS(IN_4)> CERCA);
                 OnRev(OUT_B,20);
                 OnFwd(OUT_C,45);
                 Wait(900);
                 //tercero
                 OnFwd(OUT_BC,50);
                 while(SensorUS(IN_4)> CERCA);
                 OnRev(OUT_B,20);
                 OnFwd(OUT_C,40);
                 Wait(750);
                 //recto
                 OnFwd(OUT_BC,50);
                 Wait(2300);
                 OnFwd(OUT_C,40);
                 OnRev(OUT_B,20);
                 Wait(300); 
                 Off(OUT_BC);
}
//subrutina linea negra
sub lineanegra () {
SetSensorLight(IN_3);
OnFwd(OUT_BC,50);
PlayTone(3000,500);
while (true)
{
if (Sensor(IN_3) > UMBRAL)
{
OnRev(OUT_B, 30);//giro
Wait(20);
OnFwd(OUT_C,30);

until(Sensor(IN_3) <= UMBRAL);
OnFwd(OUT_BC, 30);

Off(OUT_BC);
}
//subrutina puntos negros
sub puntosNegros () {
int j=0;
int a=150;
while (j<3){
NumOut(60,30,a);
Wait(500);

OnFwd(OUT_B,40);
OnFwd(OUT_C,40);
 if(Sensor(IN_3) <= UMBRAL){
Off(OUT_BC);
Wait(1000);
a=a+30;
NumOut(60,30,a);
Wait(500);
PlayTone(50,500);
OnRev(OUT_C,50);
Wait(Random(500)+1000);
}
if(SENSOR_1==1){
OnRev(OUT_BC,60);
Wait(500);

PlayTone(150,500);
OnRev(OUT_C,70);
OnFwd(OUT_B,70);
Wait(360);
j++;
a=a-50;
NumOut(60,30,a);
Wait(500);
}
}
Off(OUT_BC);
Wait(100);
PlayTone(500,500);
Wait(500);
PlayTone(250,500);
Wait(500);
PlayTone(70,500);
Wait(500);
NumOut(60,30,a);
Wait(20000);
}


task main ()
 {
laberinto () ;
lineanegra () ;
puntosNegros () ;
}





Reflexión
si bien la actividad no se logró como se esperaba, igualmente pudimos aprender muchas cosas como lo eran las sub-rutinas. Quizás nos faltó implementarlas de mejor manera pero desde esa actividad comenzamos a familiarizarnos mucho más con los sensores de luz, ultrasonido y tacto.

Si tienes algún aporte de esto, alguna opinión a lo que no pudimos solucionar, te invito a que comentes :)