domingo, 21 de octubre de 2012

Sucesion de Fibonacci Normal e Inversa

Autor: Juan Albarran Gutierrez
Competencia: Desarrollo de Software (Curso 2do Semestre).
Palabras Clave: Fibonacci, Ciclos, Programacion II, for, Java.

¡Hola que tal!, en esta entrada quiero compartir con ustedes un programa en Java que me ha ayudado a comprender mas los ciclos para el curso Programación II, este programa realizado en un Laboratorio del mismo ramo es sobre la Sucesion de Fibonacci que segun el numero N que sera ingresado por el usuario, mostrara el orden normal de la sucesion "y" el orden inverso de la sucesion.


Solucion

Como siempre un pseudocodigo puede ayudarte a guiarte en como sera el resultado final del programa, el cual el siguiente ilustra como deberia quedar el programa.


Algoritmo Fibonacci
         numeroFibonacciN, numeroFibonacci1 <- 0, numeroFibonacci2 <- 1, numeroIngresado | Enteros Largos;
         Escribir "Ingrese numero N";
         Leer numeroIngresado;
         SI numeroIngresado > 0 Entonces
                 Escribir "Orden Normal";
                 Para i <- 0 Hasta numeroIngresado Con Paso 1 Hacer
                          Escribir numeroFibonacci1;
                          numeroFibonacciN <- numeroFibonacci1 + numeroFibonacci2;
                          numeroFibonacci1 = numeroFibonacci2;
                          numeroFibonacci2 = numeroFibonacciN;
                  Fin Para
                  Escribe "Orden Inverso";
                  Para j <- numeroIngresado Hasta 0 Con Paso -1 Hacer
                           numeroFibonacciN = numeroFibonacci2 - numeroFibonacci1;
                           numeroFibonacci2 = numeroFibonacci1;
                           numeroFibonacci1 = numeroFibonacciN;
                           Escribir numeroFibonacci1;
                  Fin Para
         Sino
                  Escribir "Error";
         Fin Sino

Fin Algoritmo  
                 
Ejemplo








              
Se ingresa 3
"Orden Normal"
       
en el ciclo que comienza en 0 y debe terminar en 3
 i <- 0
 ---------
Escribe nro1 // 0

nroN = nro1 + nro2 // 1 <- 0+1
nro1 = nro2 //  1
nro2 = nroN //  1
  i <- i +1 // 1

Escribe nro1 // 1

nroN = nro1 + nro2 // 2 <- 1+1
nro1 = nro2 //  1
nro2 = nroN //  2

 i <- i+1 // 2

Escribe nro1 // 1

nroN = nro1 + nro2 // 3 <- 1+2
nro1 = nro2 //  2
nro2 = nron //  3

 i <- i+1 // 3

Escribe nro1 // 2

nroN = nro1 +nro2 // 5 <- 2+3
nro1 = nro2 //  3
nro2 = nroN //  5

*Termina el primer ciclo*
---------------------------------------------
"Orden Inverso"
 
Comienza el segundo ciclo que empieza en el numero ingresado (3) y termina en 0     

i <- 3
---------
nroN = nro2 - nro1 // 2 <- 5 - 3
nro2 = nro1 //  3
nro1 = nroN / 2

Escribe nro1 // 2

i <- i - 1 // 2

nroN = nro2 - nro1 // 2 <- 3 - 2
nro2 = nro1//  2
nro1 = nroN // 1

Escribe nro1 // 1
 
 i <- i - 1 //1

nroN = nro2 - nro1 // 1 <- 1 - 2
nro2 = nro1 // 1
nro1 = nroN //  1

Escribe nro1 // 1
 
i<- i - 1 //0

nroN = nro2 - nro1 // 0 <- 1 - 1
nro2 = nro1 //  1
nro1 = nroN // 0
 
Escribe nro1 // 0
 
*Termina el segundo ciclo*
 ---------------------

 *Termina el Programa*

 Codigo del Programa

import java.util.Scanner;

public class Fibonacci {

    public static void main(String[] args) {
        Scanner leer = new Scanner(System.in);
       
        // Variables
        long numeroFibonacciN, numeroFibonacci1 = 0, numeroFibonacci2 = 1, numeroIngresado;
            // Solicita el ingreso de N
            System.out.println("Porfavor ingrese el valor N de numeros a mostrar");
            numeroIngresado = leer.nextLong();
            // Si el numero es mayor que cero ejecute el resto
            if (numeroIngresado > 0) {
                // anuncio orden
                System.out.println("Orden Normal");
               
                // Comienza el primer ciclo
                for (long i = 0; i <= numeroIngresado; i++) {

                    System.out.println(numeroFibonacci1);
                    numeroFibonacciN = numeroFibonacci1 + numeroFibonacci2;
                    numeroFibonacci1 = numeroFibonacci2;
                    numeroFibonacci2 = numeroFibonacciN;
                }
                //Comienza el segundo ciclo
                System.out.println("Orden inverso");

                for (long j = numeroIngresado; j >= 0; j--) {
                    numeroFibonacciN = numeroFibonacci2 - numeroFibonacci1;
                    numeroFibonacci2 = numeroFibonacci1;
                    numeroFibonacci1 = numeroFibonacciN;
                    System.out.println(numeroFibonacci1);
                }
            }
            // Si N es menor a cero Envie mensaje de error y termina el programa
            else {
                System.out.println("El numero debe ser mayor a cero para que la sucesión sea valida");
            }
       
    }
}

Nota: puede que paresca que puede llegar a números mas altos, pero el dato "Long" tiene un limite en la memoria lo cual un numero ingresado muy elevado puede conllevar a sobreecarga e imprimiría números aleatorios.

Demostraciones


 

               
                                          
Reflexión
  En esta ocasion complico un poco al principio de como se podria implementar los ciclos en este programa y la logica que habia que implementar, pero con el tiempo deidicado a la actividad y se pudo crear este programa con ciclos "for" y me ayudo a intender mejor este concepto.
  Te invito a que si tienes dudas o quieres complementar esta actividades mediante opiniones, otras informaciones no tengas miedo de emitir tus comentarios, a participar donde cada comentario hará que se haga más interactivo este espacio.
           
 

Practica con Sistemas GNU/Linux


Autor : Juan Albarran Gutierrez
Competencia : Gestion en TI
Palabras Clave: CentOS, Software, GNU/Linux, Sistemas Operativos


Introducción


En esta actividad el grupo se verá comprometido con el sistema operativo de la familia Linux "CentOS" como caso de estudio, para finalmente desarrollar un grupo de tareas que nos han asignado.


Las tareas se irán describiendo a medida que avance el informe, además se incluirán capturas de pantalla para mantener registros y destacar cada acción que consideremos que es importante destacar, para aquello lo primero que debemos realizar es, instalar "CentOS" en la máquina virtual.


1. Instalación del Sistema.
El sistema optado fue CentOS 6 para esta actividad.

La instalación no varía mucho de un sistema operativo común, iniciamos desde el live CD de CentOS.
-->
Al momento de instalar nos solicita un Hostname. El hostname es el nombre que recibe un equipo servidor.
 
-->
Nos solicita una contraseña para el usuario root (aquel que posee permiso sobre todo)
-->
 Al final del proceso de instalación
 accedemos con nuestro nombre de usuario.
  -->





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 uno de ellos.


-->
En esta ventana, en la pestaña “users”, agregamos los usuarios con el botón “Add User”, nos muestra la siguiente ventana.
User Name: nombre del usuario
Full name: el nombre de la persona a la que le corresponde el usuario
Password: su contraseña.
Login Shell: su intérprete de comandos.






-->
Aquí cada integrante del grupo es un usuario.
Procedemos con la creación de grupos, para ello entramos en la pestaña Groups y clicamos el botón “Add Group”.
-->
En esta ventana, especificamos el nombre del grupo, y de manera opcional podríamos asignar manualmente un ID al grupo.


 
-->
Una vez creado el grupo, le hacemos doble clic y procedemos a añadir a los usuarios.
-->
Creamos 2 grupos de momento, cada uno con dos usuarios (miembros de nuestro equipo).





 
-->
Los usuarios se crean en el siguiente archivo:
/etc/passwd 

-->
Mientras que los grupos se crean en el siguiente archivo:
/etc/group

 
-->
3. Revisar la administración de servicios del sistema (procesos en segundo plano), indicar como se configuran los servicios en el sistema.
 
-->
En esta ventana, los servicios se encuentran en la parte izquierda de la ventana, a su derecha indica si el servicio esta iniciado o no, en qué nivel de ejecución se encuentra.
El nivel de ejecución es el modo de operación en los sistemas operativos.
 
-->
Nivel de ejecución Nombre Descripción
0 Alto |Apagado del sistema
1 Monousuario |No configura la interfaz de |red o los demonios de inicio, |ni permite que ingresen |otros usuarios que no sean el |usuario root, sin contraseña. |Este nivel de ejecución |permite reparar problemas, |o hacer pruebas en el |sistema.
2 Multiusuario |Multiusuario sin soporte de |red
3 Multiusuario con servicio de red |Se inicia el sistema |normalmente
4

|No se usa
5 Multiusuario grafico |Similar al nivel 3 + display |manager
6 Reinicio | Se reinicia el sistema
 
-->


Los servicios se pueden iniciar, detener y reiniciar.

-->
4. Revisar los permisos y atributos de archivos: Probar estos permisos y atributos con los usuarios y grupos creados.
-->
Para esta prueba crearemos un archivo.
 
-->
Y les aplicaremos permisos, en las propiedades del archivo.
 
-->
Se le quitaron los permisos a todos, no podrán leer ni modificar el documento.
Ingresaremos con otro usuario al sistema.

-->
Y accederemos al archivo nombrado anteriormente.
 
-->
5. Revisar y documentar los principales aspectos de la configuración de Red de los sistemas.

-->
Al acceder a “Network Connections” podremos apreciar la siguiente ventana
-->
En la pestaña Wired, se señalan las conexiones por cable, así como en la wireless las inalámbricas (WIFI) y en mobile broadband las redes 3G
 
-->
Esta es la conexión que poseemos, incluye la dirección MAC de nuestro dispositivo (la dirección MAC corresponde a la dirección física de nuestro pc, es el número de nuestra tarjeta de RED).


La configuración 802.1x es un puerto de acceso por el que se conectan los dispositivos a una red.
Ipv4 e ipv6 son las configuraciones para la IP (en nuestro caso IPv4) se ve la opción de una dirección manual o una automática (por defecto) para nuestra conexión a internet.

-->
6. Revisar los reportes de sistema (logs) y documentar cada uno de sus reportes.
 
 
-->
Los registros en el sistema, nuestro sistema no posee una interfaz gráfica para acceder a esta información, por lo que ingresamos al sistema como “root”.
La ubicación de estos reportes es la siguiente
/var/log/messages
Se ven
La fecha
El equipo
El proceso
y el mensaje


-->
Conclusión
Este trabajo consistió en detallar distinta información con respecto al uso del sistema operativo "CentOS", por ello, lo instalamos en la máquina virtual, luego se realizó la captura de pantalla y en paralelo se realizó cada tarea asignada de la actividad.
Se realizó a la creación de grupos y usuarios, verificando las distintas funcionalidades que se pueden asignar, se aplicaron las principales configuraciones de red, revisamos el visor de sucesos, al finalizar todos los puntos de la actividad y al tener las respectivas imágenes de cada suceso procedimos a realizar una pequeña descripción, así dimos por realizado el trabajo sin mayores dificultades.


(Agradecimientos a Rodrigo Villarroel integrante del grupo que ayudo en el informe y tomo las fotografias)