martes, 17 de mayo de 2011

EJERCICIO MENU

EJEMPLO

using System;
public class ArregloDosDimensiones {
static void Main() {
// declaracion e iniciación de arreglos rectangulares
int[,] arreglo1 = new int[,] { { 1, 2, 3 }, { 4, 5, 6 } };
// declaración e iniciación de arreglos dinamicos
int[][] arreglo2 = new int[ 3 ][];
string salida = "";
arreglo2[ 0 ] = new int[] { 1, 2 };
arreglo2[ 1 ] = new int[] { 3 };
arreglo2[ 2 ] = new int[] { 4, 5, 6 };
salida = "Valores en arreglo1 por fila\n";
// salida del arreglo1
for ( int i = 0; i < arreglo1.GetLength( 0 ); i++ ) {
for ( int j = 0; j < arreglo1.GetLength( 1 ); j++ )
salida += arreglo1[ i, j ] + " ";
salida += "\n";
}
salida += "\nValores en arreglo2 por fila\n";
// salida del arreglo2
for ( int i = 0; i < arreglo2.Length; i++ ) {
for ( int j = 0; j < arreglo2[ i ].Length; j++ )
salida += arreglo2[ i ][ j ] + " ";
salida += "\n";
}
Console.WriteLine(salida);
}
}

ARREGLO BIDIMENSIONAL

Este tipo de arreglos al igual que los anteriores es un tipo de dato estructurado, finito ordenado y homogéneo. El acceso a ellos también es en forma directa por medio de un par de índices. Los arreglos bidimensionales se usan para representar datos que pueden verse como una tabla con filas y columnas. La primera dimensión del arreglo representa las columnas, cada elemento contiene un valor y cada dimensión representa una relación La representación en memoria se realiza de dos formas: almacenamiento por columnas o por renglones

SINTAXIS

Nombre [fila] [columna] : tipo

Num [10] [10] : entero

DEFINICION ARREGLO

Arreglo: Es una colección de datos del mismo tipo. Sirve para manejar un número “n” de elementos en común, ya sea de tipos definidos por el Lenguaje,(“int”,”float”,”String”,etc…) así como aquellos definidos por el programador.


Un arreglo unidimensional es un tipo de datos estructurado que está formado de una colección finita y ordenada de datos del mismo tipo. Es la estructura natural para modelar listas de elementos iguales. El tipo de acceso a los arreglos unidimensionales es el acceso directo, es decir, podemos acceder a cualquier elemento del arreglo sin tener que consultar a elementos anteriores o posteriores, esto mediante el uso de un índice para cada elemento del arreglo que nos da su posición relativa.

Un arreglo unidimensional tiene una sola dimensión, También reciben el nombre de vectores en álgebra .

Un arreglo se caracteríza por :

1. Almacenar los elementos del arreglo en posiciones de memoria contínua.

2. Tener un único nombre de variable que representa a todos los elementos, y éstos a su vez se diferencian por un índice o subíndice.

3. Acceso directo o aleatorio a los elementos individuales del arreglo.

veamos como se agruparían estos 3 elementos en un solo arreglo:

private int []x = new int[3];

private int[]x = {1,2,3};

En la primera línea, hemos creado un arreglo vacío de 3 elementos; mientras que en la segunda, creamos un arreglo de 3 elementos inicializados.



SINTAXIS

Declaración:

[ ] < identificador > ;

Creación:

< identificador > = new [ tamaño ] ;







EJEMPLO.

public class arreglo_c7b3r{

// Atributos de la clase arreglo_c7b3r


private String datos[];

public arreglo_c7b3r(int elemento,String datos[]){


this.datos=datos;
}

// Metodos

//Metodo que muestra los datos

public String getdatos(){
String llenar=""; // Variable que acumulara los datos
for(int i=1;i llenar=llenar+"\n"+datos[i];
}
return ("Los datos son:" +llenar);
}
}

ejercicio funciones

martes, 10 de mayo de 2011

FUNCIONES EN JAVA

En Java una funcion es un modulo de un programa separado del cuerpo principal, que realiza una tarea especifica y que puede regresar un valor a la parte principal del programa u otra funcion o procedimiento que la invoque.

EN JAVA EXISTEN 3 CLASES USUALES DE FUNCIONES.

Las primeras son de tipo computacional que son diseñadas para realizar operaciones con los argumentos y regresan un valor basado en el resultado de esa operación.

Las segundas funciones son aquellas que manipulan información y regresan un valor que indican la terminacion o la falla de esa manipulacion.

Las terceras son aquellas que no regresan ningun valor, es decir son estrictamenta procedurales.



SINTAXIS

tipodatoregresa Nom_fun(parametros)

{ cuerpo de instrucciones;

intruccion return;

}



EJEMPLO


import java.io.*; import javax.servlet.*;

import javax.servlet.http.*;

public class prog26 extends HttpServlet

{ public void doPost (HttpServletRequest request,

HttpServletResponse response)

throws ServletException, IOException

{ int x=10;

x = funcion1(x,20);

PrintWriter pagina;

response.setContentType("text/html");

pagina = response.getWriter();

pagina.println("");

pagina.println("x="+x);

pagina.println("");

pagina.close();

}; // termina dopost

public int funcion1(int a, int b){return a+b;};

public void destroy(){super.destroy();};

}// termina class

EJERCICIO FUNCIONES

martes, 26 de abril de 2011

EJEMPLO DE SWITCH EN JAVA

  int a = 6;
      int b = 3;
      char op = '/';
      System.out.print("El resultado es : ");
      if ( op == '+' ) {
          System.out.println( a + b);
      } else if ( op == '-') {
          System.out.println( a - b);
      } else if ( op == '*') {
          System.out.println( a * b);
      } else if ( op == '/') {
          System.out.println( a / b);
      }
   }
}

DEFINICION DE SWITCH

La instrucción switch() es una instrucción de decisión múltiple, donde el compilador prueba o busca el valor contenido en una variable contra una lista deconstantes ints o chars, cuando el computador encuentra el valor de igualdad entre variable y constante, entonces ejecuta el grupo de instrucciones asociados a dicha constante, si no encuentra el valor de igualdad entre variable y constante, entonces ejecuta un grupo de instrucciones asociados a un default, aunque este ultimo es opcional.
El formato de esta instrucción es el siguiente;

capturar o asignar variable de condición;
switch(var int o char)
{
case const1: instrucción(es);
break;
case const2: instrucción(es);
break;
case const3: instrucción(es);
break; ………………
default: instrucción(es);
};

Mejor un ejemplo practico:
Prog5.cpp
#include <stdio.h>

#include <conio.h>

#include <string.h>

void main()

{

// declaracion variables

char letra;

//capturando

clrscr();

gotoxy(10,5);printf("dame una letra : ");

letra=getchar();getchar();

//empieza switch()

switch(letra)

{

case 'a': gotoxy(30,5);puts("aguila");break;

case 'b': case 'B': gotoxy(30,5);puts("baca");break;

case 'c': gotoxy(30,5);puts("caballo ");puts("camello");break;

default:gotoxy(30,5);puts("no hay");

}

getchar();

}

jueves, 14 de abril de 2011

PROGRAMA FOR

package nuroimpar;
import java.io.*;
/**
 *
 * @author Administrador
 */
public class Main {
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args)throws IOException {
        int impar=1;
        for (int i=0;i<51;i++)
        {
    System.out.println(impar);
        impar=impar+2;
        }
}
}

PROGRAMA DO WHILE

package impar;
import java.io.*;
/**
 *
 * @author Administrador
 */
public class Main {
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args)throws IOException {
      int i=0;
      int impar=1;
      do
      {
         System.out.println(impar);
         impar=impar+2;
         i=i+1;
      }
      while (i<51);
    }
}

martes, 12 de abril de 2011

CICLOS

cuando se estudiaron las estructuras de control en los algoritmos, los ciclos sirven para repetir la ejecución de una sentencia o bloque de sentencias.n para repetir la ejecución de una sentencia o bloque de sentencias.
Un ciclo o bucle es una informacion repetitiva, que va marcada por un comienzo y un fin. En programacion empleamos tres ciclos: For, While, Do while.


CICLO FOR 
en ocasiones en las que nos interesa ejecutar instrucciones un número específico de veces, en lugar de probar una condición. Este es el caso en que usaremos un ciclo For.

int i=0;
System.out.println("ciclo for");
int acum=0;
int edad=0;
int promedio=0;
for (i=0; I<23,i++)System.out.println("ciclo for #"+i);
Sistem.out.println("digite edad");
edad=in.nextInt(); acum=edad+acum;
}
promedio=acum/23;
System.out.println("el promedio de edad es:"+promedio);

CICLO WHILE


este ciclo el cuerpo de instrucciones se ejecuta mientras una condición permanezca como verdadera en el momento en que la condición se convierte en falsa el ciclo termina.

int n;
n=1;
while (n<=10)
{
printf("El Numero es: ",n);
n++;
}

salida
El Numero es: 1
El Numero es: 2
El Numero es: 3
El Numero es: 4
El Numero es: 5
El Numero es: 6
El Numero es: 7
El Numero es: 8
El Numero es: 9
El Numero es: 10

CICLO DO WHILE


se le conoce por esta razón como ciclo de condición de salida. Su formato general es Su diferencia básica con el ciclo while es que la prueba de condición es hecha al finalizar el ciclo, es decir las instrucciones se ejecutan cuando menos una vez porque primero ejecuta las instrucciones y al final evalúa la condición; También : cargar o inicializar variable de condición;

do
{
grupo cierto de instrucción(es);
instrucción(es) de rompimiento de ciclo;
}
while (condición);
x=1;
do
{
List.add(“pato”);
x++;
}
while(x⇐10);

sábado, 9 de abril de 2011

EJERCICIO 13

EJERCICIO 11

EJERCICIO 10

EJERCICIO 9

EJERCICIO 8

EJERCICIO 14

EJERCICIO 15

EJERCICIO 17

EJERCICIO 20

EJERCICIO 21

EJERCICIO 23

EJERCICIO 25

EJERCICIO 27

EJERCICIO 3

EJERCICIO 2

EJERCICIO 24

martes, 5 de abril de 2011

EJERCICIO 4

package numeropar;
import javax.swing.JOptionPane;
/**
 *
 * @author user
 */
public class Main {
    /**
     * @paramargs the command line arguments
     */
public static void main(String[] args) {
int par;
for (par=2;par<31;par=par+2){
JOptionPane.showMessageDialog(null, par);
        }
 }
}

EJERCICIO 6

package billetedeltranvia;
import java.util.Scanner;
/**
 *
 * @author Administrador
 */
public class Main {
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args)
    {
       Scanner in = new Scanner (System.in);
       double costoPasaje=0, km=0,descuento=0, dias=0, Total=0;
       System.out.println("ingrese dias");
       dias = in.nextDouble ();
       costoPasaje=500;
       System.out.println("ingrese # de km");
       km=in.nextDouble();
       if(dias<costoPasaje*km);
 else {
           Total=(dias-costoPasaje*km);
           System.out.println ("km: " + km);
           System.out.println("dias: "+dias);
           System.out.println ("estadia: " +Total);
 }
     }
}

martes, 22 de marzo de 2011

EJERCICIO DE LA EDAD

EJERCICIO SELECCIONE 1 OPERACION

EJERCICIO 18

EJERCICIO 16

EJERCICIO 15

EJERCICIO 12

EJERCICIO 10

EJERCICIO 8

EJERCICIO 6

EJERCICIO 9

martes, 8 de marzo de 2011

EJERCICIO 2

EJERCICIO 1

PACKAGE TERCERO

package tercero;

import java.io.*;

import javax.swing.JOptionPane;

public class Main {

public static void main(String args[]) throws IOException, Exception

{

int suma=0,n1,n2;

String Sn1,Sn2;

Sn1=JOptionPane.showInputDialog("Ingrese el primer numero");

n1=Integer.parseInt(Sn1);

Sn2=JOptionPane.showInputDialog("ingrese el segundo numero");

n2=Integer.parseInt(Sn1);

suma=n1+n2;

JOptionPane.showMessageDialog(null,"la suma es:"+suma,"resultado",

JOptionPane.PLAIN_MESSAGE );

}

}

PACKAGE SEGUNDO

package segundo;
   
import java.io.*;

public class Main {

public static void main (String args[]) throws IOException,Exception
 {

InputStreamReader isr= new InputStreamReader(System.in);

BufferedReader br= new BufferedReader(isr);

int suma=0,n1,n2;

System.out.print("ingrese el primer numero");

n1=Integer.parseInt(br.readLine());

System.out.print("ingrese el segundo numero");

n2=Integer.parseInt(br.readLine());

suma=n1+n2;

System.out.println("resultado:"+suma);

}

}

PACKAGE PRIMERO

package primero;

importjava.io*;

public class Main {

public static void main(String[] args) {

System.out.println("¡HICE MI PRIMER PROGRAMA!");

}

}

martes, 1 de marzo de 2011

COMO SE CREA UN PROYECTO EN JCREATOR?

JCreator es un entorno de desarrollo para Java. Existen dos versiones de este programa, una es comercial (JCreator PRO) y por la misma razón contiene algunas utilidades adicionales en comparación a la versión gratuita (JCreator LE). El JCreator actúa como una máscara sobre el JDK y permite usarlo en ambiente Windows. Por ello el Java Development Kit debe estar instalado previamente en la máquina para poder instalar su JCreatoR.
Para conseguir el programa hay que ir a http://www.jcreator.com. Allí hay que hacer download del JCreator LE si desea la versión gratis, y del Java Development Kit en la parte inferior. Esta última tiende a requerir un largo rato para bajar el archivo sobre todo si su conexión es lenta, pero es necesaria.
Para poder trabajar con JCreator se debe establecer la carpeta en la que está instalado el JDK (cualquier versión) para esto:
Ir al menú "Configure". Después a "Options" (La ventana de opciones permite modificar muchísimas cosas relacionadas al programa). Luego escoger "JDK Profiles"
Una vez allí, se presiona el botón "New" (que está arriba a la derecha), esto es para agregar el JDK. Finalmente se elige la carpeta en la cual se encuentra instalado el JDK.
El programa detecta automáticamente la versión y el archivo de clases, así que no se debe modificar nada de esto luego de que él detecte el programa. .
Pulsar el botón OK..

COMO SE CREA UN PROYECTO EN NETBEANS

Para instalarnos el IDE NetBeans tenemos que hacer clic sobre este vínculo Apéndice - Descarga e instalación del Entorno de Desarrollo Java NetBeans
Nota: antes de seguir adelante es conveniente que hagamos un repaso sobre la convención en Java respecto a la utilización de las letras mayúsculas y minúsculas en los nombres en el Apéndice - Convenciones Java y UML - Mayúsculas y minúsculas (I)
El IDE NetBeans es un entorno de desarrollo Open Source escrito en Java. Como este será el entorno de desarrollo utilizado durante el curso, es conveniente realizar el ya célebre programa Hola Mundo para saber como
  • crear un nuevo proyecto
  • crear un nuevo paquete
  • crear una nueva Clase
  • compilar una Clase
  • ejecutar una Clase
Crear un nuevo proyecto
NetBeans al igual que la mayoría de los entornos de desarrollo, aloja sus aplicaciones en proyectos
  • estos proyectos sólo tienen sentido cuando estamos desarrollando
    • cuando una aplicación pasa a producción, el concepto de proyecto del entorno de desarrollo se pierde

lunes, 28 de febrero de 2011

PARA QUE ES NECESARIO JDK

El paquete JDK contiene el entorno de desarrollo de Java de Sun. Sirve para desarrollar programas Java y proporciona el entorno de ejecución necesario para ejecutar dichos programas. También incluye un módulo (plugin) para que los navegadores puedan ejecutar programas Java.
El JDK viene en dos sabores, un binario precompilado y un paquete fuente. Anteriormente, el módulo incluido en el paquete binario JDK no podía utilizarse en LFS debido a la incompatibilidad con los navegadores compilados con GCC-3. Esto ya no es así
Para poder utilizar el código fuente y los parches debes leer y aceptar la Java Research License de Sun. Adicionalmente, el código fuente no puede ser descargado desde ciertos paises, por lo que para los usuarios de estos paises el binario es la única opción.
Si planeas compilar el código fuente del JDK, también necesitarás descargar la versión binaria para construir el JDK.

ORIGEN DE JAVA

este lenguaje fue diseñado antes de que comenzara la World Wide Web (www), ya que se diseñó para dispositivos electrónicos de calculadoras, la televisión interactiva y microondas.

Las tres razones por las que se desarrollo java fueron las siguientes:
  • La necesidad de interfaces mucho más cómodas e intuitivas que los sistemas que existian en esa época.
  • La fiabilidad y facilidad de desarrollo.
  • Enorme diversidad de controladores electrónicos.

CARACTERISTICAS DE JAVA

1.Lenguaje simple
2.Orientado a objetos
3.Distribuido
4.Interpretado y compilado a la vez
5.Robusto
6.Seguro
7.Indiferente a la arquitectura
8.Portable
9.Alto rendimiento
10.Multihebra
11.Dinámico
12.Produce applets

JAVA

Java es un lenguaje de programación y la primera plataforma informática creada por Sun Microsystems en 1995. Es la tecnología subyacente que permite el uso de programas punteros, como herramientas, juegos y aplicaciones de negocios. Java se ejecuta en más de 850 millones de ordenadores personales de todo el mundo y en miles de millones de dispositivos, como dispositivos móviles y aparatos de televisión.

C++

C++ es un lenguaje de programación diseñado a mediados de los años 1980 por Bjarne Stroustrup. La intención de su creación fue el extender al exitoso lenguaje de programación C con mecanismos que permitan la manipulación de objetos. En ese sentido, desde el punto de vista de los lenguajes orientados a objetos, el C++ es un lenguaje híbrido.

martes, 22 de febrero de 2011

PROGRAMACION ORIENTADA A OBJETOS

La programación orientada a objetos o POO (OOP según sus siglas en inglés) es un paradigma de programación que usa objetos y sus interacciones, para diseñar aplicaciones y programas informáticos. Está basado en varias técnicas, incluyendo herencia, abstracción, polimorfismo y encapsulamiento. Su uso se popularizó a principios de la década de los años 1990. En la actualidad, existe variedad de lenguajes de programación que soportan la orientación a objetos.

Los objetos son entidades que combinan estado (atributo), comportamiento (método) e identidad:
  • El estado está compuesto de datos, será uno o varios atributos a los que se habrán asignado unos valores concretos (datos).
  • El comportamiento está definido por los procedimientos o métodos con que puede operar dicho objeto, es decir, qué operaciones se pueden realizar con él.
  • La identidad es una propiedad de un objeto que lo diferencia del resto, dicho con otras palabras, es su identificador (concepto análogo al de identificador de una variable o una constante).
Un objeto contiene toda la información que permite definirlo e identificarlo frente a otros objetos pertenecientes a otras clases e incluso frente a objetos de una misma clase, al poder tener valores bien diferenciados en sus atributos. A su vez, los objetos disponen de mecanismos de interacción llamados métodos, que favorecen la comunicación entre ellos. Esta comunicación favorece a su vez el cambio de estado en los propios objetos. Esta característica lleva a tratarlos como unidades indivisibles, en las que no se separa el estado y el comportamiento.
Los métodos (comportamiento) y atributos (estado) están estrechamente relacionados por la propiedad de conjunto. Esta propiedad destaca que una clase requiere de métodos para poder tratar los atributos con los que cuenta. El programador debe pensar indistintamente en ambos conceptos, sin separar ni darle mayor importancia a alguno de ellos. Hacerlo podría producir el hábito erróneo de crear clases contenedoras de información por un lado y clases con métodos que manejen a las primeras por el otro. De esta manera se estaría realizando una programación estructurada camuflada en un lenguaje de programación orientado a objetos.
La POO difiere de la programación estructurada tradicional, en la que los datos y los procedimientos están separados y sin relación, ya que lo único que se busca es el procesamiento de unos datos de entrada para obtener otros de salida. La programación estructurada anima al programador a pensar sobre todo en términos de procedimientos o funciones, y en segundo lugar en las estructuras de datos que esos procedimientos manejan. En la programación estructurada sólo se escriben funciones que procesan datos. Los programadores que emplean POO, en cambio, primero definen objetos para luego enviarles mensajes solicitándoles que realicen sus métodos por sí mismos.

ENSAMBLADOR

El término ensamblador (del inglés assembler) se refiere a un tipo de programa informático que se encarga de traducir un fichero fuente escrito en un lenguaje ensamblador, a un fichero objeto que contiene código máquina, ejecutable directamente por la máquina para la que se ha generado. El propósito para el que se crearon este tipo de aplicaciones es la de facilitar la escritura de programas, ya que escribir directamente en código binario, que es el único código entendible por la computadora, es en la práctica imposible. La evolución de los lenguajes de programación a partir del lenguaje ensamblador originó también la evolución de este programa ensamblador hacia lo que se conoce como programa compilador.

INTERPRETE

En ciencias de la computación, intérprete o interpretador es un programa informático capaz de analizar y ejecutar otros programas, escritos en un
 Los intérpretes se diferencian de los compiladores en que mientras estos traducen un programa desde su descripción en un lenguaje de programación al código de máquina del sistema, los primeros (los intérpretes) sólo realizan la traducción a medida que sea necesaria, típicamente, instrucción por instrucción, y normalmente no guardan el resultado de dicha traducción.
Usando un intérprete, un solo archivo fuente puede producir resultados iguales incluso en sistemas sumamente diferentes (ej. una PC y un PlayStation 3). Usando un compilador, un solo archivo fuente puede producir resultados iguales solo si es compilado a distintos ejecutables específicos a cada sistema.
Los programas interpretados suelen ser más lentos que los compilados debido a la necesidad de traducir el programa mientras se ejecuta, pero a cambio son más flexibles como entornos de programación y depuración (lo que se traduce, por ejemplo, en una mayor facilidad para reemplazar partes enteras del programa o añadir módulos completamente nuevos), y permiten ofrecer al programa interpretado un entorno no dependiente de la máquina donde se ejecuta el intérprete, sino del propio intérprete (lo que se conoce comúnmente como máquina virtual).
Para mejorar el desempeño, algunas implementaciones de programación de lenguajes de programación pueden interpretar o compilar el código fuente original en una más compacta forma intermedia y después traducir eso al código de máquina (ej. Perl, Python, MATLAB, y Ruby). Algunos aceptan los archivos fuente guardados en esta representación intermedia (ej. Python,

Comparando su actuación con la de un ser humano, un compilador equivale a un traductor profesional que, a partir de un texto, prepara otro independiente traducido a otra lengua, mientras que un intérprete corresponde al intérprete humano, que traduce de viva voz las palabras que oye, sin dejar constancia por escrito.
En la actualidad, uno de los entornos más comunes de uso de los intérpretes informáticos es Internet, debido a la posibilidad que estos tienen de ejecutarse independientemente de la plataforma.

COMPILADOR

Es un programa informático que traduce un programa escrito en un lenguaje de programación a otro lenguaje de programación, generando un programa equivalente que la máquina será capaz de interpretar. Usualmente el segundo lenguaje es lenguaje de máquina, pero también puede ser simplemente texto. Este proceso de traducción se conoce como compilación. Un compilador es un programa que permite traducir el código fuente de un programa en lenguaje de alto nivel, a otro lenguaje de nivel inferior (típicamente lenguaje de máquina). De esta manera un programador puede diseñar un programa en un lenguaje mucho más cercano a como piensa un ser humano, para luego compilarlo a un programa más manejable por una computadora

martes, 8 de febrero de 2011

QUE ES PROGRAMACION ?

  • En informática, la programacion es un proceso por el cual se escribe (en un lenguaje de programacion), se prueba, se depura y se mantiene el código fuente de un programa informático.
  • La Programacion es la accion de escribir un conjunto de instrucciones escritas en un determinado lenguaje, que dirigen a un ordenador para la ejecución de una serie de operaciones, con el objetivo de resolver un problema que se ha definido previamente.
  • La Programacion es un conjunto de tecnicas utilizadas para desarrollar programas que sean faciles de leer, depurar (poner a punto) y modificar o mantener.
La programación es el proceso de diseñar, escribir, probar, depurar y mantener el código fuente de programas computacionales.El propósito de la programación es crear programas que exhiban un comportamiento deseado. El proceso de escribir código requiere frecuentemente conocimientos en varias áreas distintas, además del dominio del lenguaje a utilizar, algoritmos especializados y lógica formal. Programar no involucra necesariamente otras tareas tales como el análisis y diseño de la aplicación (pero si el diseño del código), aunque si suelen estar fusionadas en el desarrollo de pequeñas aplicaciones.

La programacion es una actividad en la que la creatividad juega un papel crucial, por ello un buen programador ademas de tener una buena formacion academica es una persona muy creativa y con una gran capacidad de abstraccion, esencial para la resolucion de problemas.