Thursday, August 29, 2013

Java a lo maracucho, capitulo 3

Capitulo 3

http://www.horstmann.com/bigjava.html

Implementando Clases


Metas del capitulo

  • Familiarizarse con el proceso de implementar clases
  • Implementar metodos simples
  • Entender el proposito y el uso de los constructores
  • Entender como acceder a las "instance" variables y a las variables locales

En este capitulo se aprendera un poco sobre el como las interfaces publicas especifican la informacion que el programa debe interpretar, manipular o/y resolver. En el proceso uno va a conocer como relacionar la interface publica de una clase su diseño, el como crear sus constructores,  implementar los metodos, encapsularlos y documentarlos.

3.1  Las variables "instance"


Las variables "instance" son estas que guardan el dato especifico de cada clase, como las propiedades de la clase, creadas para guardar o señalar la propiedad de la clase.

public class Contador
{

    private int valor;

//..contructor de clase con las propiedades que sean atribuidas, en este caso la variable "instance"

}

las variable "instance" tienen un accesador especifico(private), un tipo para la variable(int), y e nombre de la variable(valor).

*Cada objeto de la clase tiene su coleccion de "instance" variables.
*Las "instance" variables del objeto guardan la informacion requerida para la ejecucion de los metodos.

3.2   Encapsulacion


Encapsulacion es un metodo de programacion que sugiere al programador ocultar todo tipo proceso para que no pueda ser publicamente modificado.

Esta forma de programar es muy importante para asegurar la informacion y saber cuando esta siendo usado dicho metodo.

Un ejemplo seria el motor del carro; en el carro existen una serie de maquinas que forman el motor, pero todas estas con exepcion de una puede ser reparada por cualquier mecanico, esta se le dice la "caja negra" una maquina que maneja el resto de las maquinas y calcula su debido comportamiento. La "caja negra" tiene los detalles necesarios para que el motor funcione adecuadamente.

Encapsulacion permite al programador usar las clases sin saber su implementacion. Como la clase StreamPrint de System.out.pritnln("Hola"); que permite usar el metodo de la clase StreamPrint sin tener que saber su implementacion.

Otro ejemplo seria el crear una clase y que el tester class pueda acceder a la clase y sus metodos sin saber como fueron implementados los metodos y su proceso interno.

Video opcional: https://www.youtube.com/watch?v=09CcotpGhqE

3.3 Especificar la interface publica de una clase.


Con el tiempo uno se dara cuenta la importancia de las interfaces y del como son extendidas a otras clases pero ahora se veran las interfaces como la clase publica usada para ejercer una tarea o funcion.

Las clases publicas pueden ser diseñadas o programadas para que hagan una tarea cuantas veces pueda, esto demuestra la funcionalidad de una interface publica de la clase crear como una clase generica que repita el mismo tipo de metodos para sus espeficicas funciones a multiples usuarios.

Por ejemplo, una interface publica de una clase puede ser la cuenta de banco, diseñada por los programadores de un banco que quieran que cada cliente pueda acceder a la cuenta, ver su estado actual, ademas de retirar y guardar creditos, todo diseñado en una clase publica llamada CuentaBancaria.

CuentaBancaria es una clase publica que se usa como interfase generica dado la simplicitud de sus funciones y de sus metodos, con el tiempo se vera el como implementar o extender este tipo de clases por medio de otras subclases y adicionarles mas metodos, etc, y el como crear una interface que solo use unos metodos unicos, genericos, para la implementacion de otro tipo de clases que llame a la interface. Algo mas adelante, segun el libro y el conocimiento que uno tenga.

*Cuando uno va a crear una clase o diseñar una clase uno tiene que saber que metodos seran usados, y que metodos pueden ser reusados para la simplicidad del programa y la rapidez de este.

3.3.1 Tipos de Metodos


  • Estan los metodos que retornan algo debido a su tipo, denominados "accesors" y se especifican por el tipo de valor que retornaran, ejemplo: "double"
  • Estan tambien los metodos que manipulan informacion pero no retornan nada, denominados "mutators" y se especifican por la palabra reservada "void"

3.3.2 Constructores


Los constructores son los que crean al objeto y le dan sus datos predeterminados. los Constructores tiene dos espeficicaciones importantes.

  • Tienen el mismo nombre de la clase
  • No retornan ningun tipo de informacion y no llevan ningun tipo de espicificacion, ni "void"

Otra de las cualidades de los contructores es la forma de construirlos. Tienen dos formas generales de hacerlos.

  • Los que no tienen nada en el parametros y son creados con una informacion predeterminada.
  • Los que tienen algun tipo de parametros establecidos y pueden llevar un tipo espeficico de informacion al construirse.

por ejemplo: 

public class CuentaBancaria
{
     private instance variables - se llenan luego
     //constructor
     public CuentaBancaria()
     {
     private instance variables = 0;
     }
     public CuentaBancaria(double balanceInicial)
     {
     private instance variables = balanceInicial;
     }
}

En otras palabras, cuando empiezan a programar: al crear una clase siempre ver que tipo de "instance" variables necesita, los constructores, y los metodos, con esto ya lo demas es pura logica, algoritmo y creatividad. Palabras personales:  priotizar lo mas importante entre el estudio, el area social y la vida personal, el balancearlo mediante la personalidad de uno y el no dejarse llevar por nadie mas que aquellos que verdaderamente lo pueden ayudar, uno siempre creara situaciones donde aprenderan de los problemas.

3.4 Javadoc


A la hora de programar, del ya saber que metodos usar y que hacer, lo siguiente es documentarlo todo, con el tiempo se vera como Javadoc sera muy util y el como los comentarios adicionales en el programa tambien.

Javadoc es el programa que permitira documentar las clases, sus objetos y metodos, dandoles la informacion de cada funcion para la facilidad de cualquier programador poder entender el programa y sus funciones. Ver video: https://www.youtube.com/watch?v=OfOz-hbntu0


Pagina para bajar el programa Javado directo de Oracle, o si se usa netbeans, ya esta instalado y para ver como se pueden generar documentos Javadoc, vease el video.

"Javadoc es una utilidad de Oracle para la generación de documentación de APIs en formato HTML a partir de código fuente Java. Javadoc es el estándar de la industria para documentar clases de Java. La mayoría de los IDEs los generan automáticamente.

Javadoc también proporciona una API para crear doclets y taglets, que le permite analizar la estructura de una aplicación Java. Así es como JDiff puede generar informes de lo que ha cambiado entre dos versiones de una API."

http://es.wikipedia.org/wiki/Javadoc

*Javadoc es la misma documentacion usada por el API: http://docs.oracle.com/javase/6/docs/api/

3.5 Creando la implementacion de la clase


Una clase se puede ver como el objeto y sus funciones, por ejemplo un carro y lo que hace el carro.

/** implementacion de la clase carro con sus propiedades
*@author x
*/

public class Carro
{

//instance variables

     private string color;
     private String modelo;

//constructor

     public Carro()
     {
          color = negro;
           modelo= simple;
      }// fin del constructor

//metodos

     @param cambia el color del carro
     public void colorCarro(string color)
     {
       this.color = color;
      }//fin del metodo colorCarro
   
     @param cambia el modelo
     public String modeloCarro(String modelo)
     {
     this.modelo = modelo;
     return this.modelo;

     }//fin del metodo modeloCarro

}//fin de la clase Carro

3.6 Creando una clase de prueba o "Tester Class"


Las clases todas son parte del programa y todas tienen su funcion, por lo mismo para ver si las clases funcionan como deben el programador puede crear una clase "main" o principal para probar si la clase funciona como debe y esta es una clase aparte dentro del mismo paquete que crea objetos y llama a las funciones.

/**
Una clase para probar la clase Carro
*/

public class CarroPrueba
{

   /**
   prueba los metodos de la clase CarroPrueba
   @param args no son usados
   */

   public static void main(String[] args)
 
   private string modelo = "";
   Carro cliente = new Carro();
   cliente.colorCarro("Dorado");
   modelo = cliente.modeloColor("2013");

   System.out.println(cliente.color + " " + modelo);

}//fin de la clase de prueba

En esta clase de prueba use varias formas de programar para representar el uso de las variables de las clases creadas y el como guardar la informacion generada en los metodos de las clases creadas en las clases del CarroPrueba, otro metodo de programar. para otro ejemplo vease el link: http://www.horstmann.com/bigjava.html donde dice "Source code for all sample programs" que significa, fuente del codigo de los ejemplos de las clases, objetos y metodos planteados.

3.7 Variables locales


Las variables locales son las variables declaradas en el cuerpo del metodo.

"Lenguajes orientados a objetos más estrictos y formales tales como Java y C#, no permiten la declaración de variables locales estáticas en una función. En estos lenguajes las variables "estáticas" se restringen al ámbito de la clase." http://es.wikipedia.org/wiki/Variable_local

Vease tambien: http://docs.oracle.com/javase/tutorial/java/nutsandbolts/variables.html

Tarea: De que se trata la referencia "this" como variable y como constructor?

Monday, August 19, 2013

Java a lo Maracucho, Capitulo 2

Referencias:

Capitulo 2


Metas del capitulo


  • Aprender  acerca de las variable
  • Entender el concepto de las clases y los objetos
  • Poder llamar metodos
  • Aprender acerca de los parametros y los valores del resultado
  • Entender la diferencia entre objetos y la referencia de los objetos
  • Escribir programas que muestren formas simples

Los programas de hoy en dia son complejos y a su ves genialmente diseñados de una forma simple y eficiente. El estudiar programacion es para todos, no significa que uno va a llegar a las grandes ligas, pero te da trabajo y es necesario aprender en un mundo donde la informacion esta al alcance de todos.

Por lo mismo, lo que haga aqui es mas que todo personal, una forma de aprender acerca del lenguaje Java, ademas a recuperar lo aprendido en la universidad, traduciendo los capitulos del libro Big Java, indagando un poco sobre las definiciones y de donde vienen, entre otras referencias, por el simple hecho de que la informacion es nuestra herramienta para poder armar una sociedad mas humana y menos salvaje.

2.1 Que es un objeto?

http://docs.oracle.com/javase/tutorial/java/concepts/object.html

Los Objetos son la clave para entender la programacion orientada por objetos. Todo en si es un objeto: un carro, un payaso, un tiburon, una bicicleta.

Todos los objetos comparten dos caracteristicas: el estado, por medio el cual se diferencian entre los demas objetos, por ejemplo; un payaso tiene pintada la cara, es un artista, de la especie humana, etc. con un comportamiento, pues nos hace o llorar o reir, canta, baila, come, duerme, etc .

para implementar tal ejemplo y saber que estado o comportamiento tiene cada objeto se puede preguntar antes de diseñar un programa. cuales son los atributos o estados que quiero que tenga el programa? y que quiero que haga el programa? por ejemplo; un semaforo, tiene tres luces, esta en una calle. su comportamiento: prende cada luz por tiempo, necesita energia, y a las 12 am empieza a titilar.

Para la programacion, el estado del objeto se guarda en las variables o campos, y expone su comportamiento por medio de los metodos o funciones. Los metodos operan dentro del estado interno del objeto y sirven como mecanismo primario para la comunicacion entre objeto-a-objeto.

OJO, con el tiempo esta definicion tendra bastante relevancia en la practica.

Escondiendo el estado interno y requiriendo que toda interaccion sea trabajada a traves de los metodos del objeto es comunmente llamada encapsulacion de los datos. -un principio fundamental para la programacion orienada en objetos.

El atribuir estados al programa, como el numero de velocidades de un carro o moto, etc, le da la capacidad al caomportamiento, atraves de los metodos, de cambiar sus velocidades mientras sea intruida hacerlo.

2.2 Variables

http://docs.oracle.com/javase/tutorial/java/nutsandbolts/variables.html

Los objetos guardan sus estados en los campos o variables, dependiendo del programa o del diseñador.

int velocidad = 0;
string luz = "verde";

Cuando se crean variables, o campos, se deben iniciar y declarar, sea con una caracteristica nula o con lo que el programador quiera que tenga como estandar.

Las variables o campos tienen varios usos y varios tipos, cada uno importante saber de donde vienen y saber su terminologia.

2.2.1. Tipos de Variables


http://docs.oracle.com/javase/tutorial/java/nutsandbolts/variables.html

  • Variable de instancia(Campos No-estaticos ): son las variables o los campos unicos a cada instancia de la clase, independientes de otras clases. Variables que cambian por cada vez que se usa la clase para cada tipo de instancia o objeto similar, se vera cuando se trabaje con las herencias, recurciones, etc.
  • Variables de Clase(Campos estaticos): variables unicas de la clase, variables que a pesar de que las clases sean iniciadas, permaneceran iguales, dado si estado iniciado. Las variables estaticas pueden ser constantes cuando ademas estan definidas con la palabra reservada final usada para datos constantes. pi, entre otros.
  • Variables locales: son aquellas iniciadas dentro de los metodos, para poder trabajar con una libertad independiente dentro de los metodos. ejemplo;  la variable que cuenta.
  • Parametros: las variables tambien estan dentro de los parametros, como la de args eso es una variable iniciada, o la del for loop (int i = 0; i<10; i++) aqui "i" esta iniciada y todo.

El como nombrar a una variable tiene importancia para el programador como para quien tenga que trabajar en el futuro con el programa. Por lo general se nombran las variables por el atributo que vayan a hacer, y lo mas corto posible, SIEMPRE, comenzando por letra pequeña. Si esta compuesta por dos palabras, la primera pequeña, la segunda mayuscula.

Para un atributo como el de calcular el numero de veces que Cabrera se embaso, uno puede crear una variable similar :

Primero el tipo de variable, en este caso "int", luego el nombre de la variable:

int basesCab = 0;

Se inicia con 0 porque al comienzo Cabrera tenia 0.

Para las constantes es importante que todas sean capitulizadas.

Pl numero constante de algo.

int NUM_VEL = 6;

Las letras mayusculas al comienzo se escriben para diferenciar las clases de las variables, solo para que el programador sepa cuales son.**pero con el tiempo se vera porque.

2.3 Tipos de asignacion para las variables


Para aprender sobre cualquier lenguaje es recomendable saber sobre su terminologia. En este caso aprender sobre los conceptos de los tipos de datos que se van a manejar o manipular, sus variables o variables y su asignacion o tarea.

Un programa de computadora procesa valores: numeros, "strings"o cuerdas, y datos mas complicados. Cada dato tiene un tipo.

Los tipos espeficican la coleccion de valores o datos y las operaciones que pueden ser procesadas por los valores o datos.

Los tipos de datos de cuerda o  "string" son todos estos datos en forma de letras o palabras que forman una especie de cuerda o "string". Las cuerdas o "string" se diferencian en llevar comillas(""), dentro de las comillas el compilador las traduce como cuerdas o "string", por ejemplo; "Hola" es un string, pero Hola no lo es. Tienen que estar dentro de las comillas.

Otros tipos son de tipos de datos son los datos primitivos, de numeros, como el int y el double. El int son los famosos numeros enteros, pueden ser positivos o negativos, y los double, son aquellos que tienen fracciones
.

2.3.1  Tipo de Datos Primitivos para las variables


http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html

Las variables tipo de datos primitivos son todas aquellas que tienen numeros y cada tipo dato puede guardad una cantidad de bits en la memoria. Ya que el JVM asigna una serie de espacios en la memoria para que esos datos sean guardados. Se entiende mejor cuando se sabe un poco sobre el como el proceso del como los lenguajes de maquina guardan la informacion. vease. Introduccion los sistemas de computacion.

Todos estos tipos de variables son reservados, por lo mismo tiene que ser escritos de tal forma. Al tiempo uno podra crear cualquier tipo como quiera, pero ahora esto es asi hasta avanzado y cambiado por el entendimiento de la programacion y la manipulacion de datos, etc.

Representacion de signo: http://es.wikipedia.org/wiki/Representaci%C3%B3n_de_n%C3%BAmeros_con_signo


  • byte = 8 bit con representacion de signo = -128 inclusivo a 127
  • short = 16-bit con representacion de signo = -32,768 inclusivo 32,767
  • int = 32-bit con representacion de signo -2,147,483,648  inclusivo 2,147,483,647
  • long = 64-bit con representacion de signo  -9,223,372,036,854,775,808 inclusivo 9,223,372,036,854,775,807
  • float = 32-bit IEEE 754 floating point, numeros fuera de la mira de discusion
  • double = 64-bit IEEE 754 floating point, numeros fuera de la mira de discusion


Otros tipos de variables reservadas son los sigientes:

Se vera que estos datos primitivos guardan simbolos, pero los simbolos estan formadas por numeros hexadecimales, descrito por la tabla Unicode.

Tabla Unicode: http://en.wikipedia.org/wiki/Unicode

  • char: es un tipo de dato simple del sibolo de 16-bit Unicode. Con un valor minimo de '\u0000' igual a 0, y un valor maximo de '\uffff' igual a 65,535 inclusive.

El otro dato primitivo es el boolean.

  • boolean: guarda dos datos, las palabras reservadas true y falsa. Que se usan para comparar datos, cuyos tienen que tener la misma informacion dependiendo del estado y la caracteristica programada.

2.3.2. El operador que asigna 


El operador(=) es quien le asigna los datos a la variable, pero antes la variable tiene que estar inicializada con un dato predeterminado, o nulo, por el mismo JVM.

int num =  0;
o
int num;

es recomendable siempre que se inicialize con "0" o algo predeterminado, asi no habra problemas con los datos que tenga, como reinicializar la variable a un estado determinado por cada operacion.

otra cosa muy importante, es el tipo de data que recibira la variable, siempre es importante declararla para el uso que se le vaya a dar, pero siempre se puede (cast), o usar de esa forma para algunos usos. depende del nivel de programacion se sabra con el tiempo.

ah, algo ahi, no se puede inicializar la misma variable dos veces, solo una, pues que el compilador encontrara un error, syntax error ya que no reconocera la variable con el mismo nombre como legal.

2.4 Objetos, Clases y Metodos


  • Objetos: Son entidades del programa que se manipulan llamando a los medotos.

http://docs.oracle.com/javase/tutorial/java/javaOO/objects.html

  • Metodos: Son una serie de instrucciones que accesan la informacion al objeto.
  • Clases: La clase declara al objeto que se le puede aplicar a los objetos.

En cierta forma los objetos son en si el nucleo del programa, por donde el programador puede llamar a los metodos que manipulan la informacion recibida mediante a la clase creada.

Las Clases son el tipo del Objeto, como las variables tienen tipo int o double, la clases son para los objetos.

Un ejemplo es el:

System.out.println("hola");
el "System.out" es el objeto de la clase PrintStream. hola tambien es un objeto per de la clase String.

Para mejor informacion uno tiene que saber que son las subclases y las clases heradadas, luego con el tiempo se entendera un poco. Ya que el "System.out" viene primero de la clase "System" pero esta tiene otra subclase denominada "PrintStream" con los mismos atributos de la clase "System" pero con los de la clase "PrintStream". Para que se hace esto? para facilitar la utilizacion y la modificacion de la informacion.

El "out" es una descripcion y campo de la clase de tipo PrintStream.

El metodo es tipo String de la clase String.

vease: http://docs.oracle.com/javase/7/docs/api/java/lang/System.html

2.5 Parametros del metodo y valores de retorno


Los parametros por lo general son los que reciben la informacion al metodo, ya que pueden haber parametros sin ningun tipo de informacion y los metodos retornen algo.

Hay dos tipos del como los metodos son llamados, uno el implicito, aquel donde el programador llama al metodo y le da en los paremetros el tipo de informacion que puede recibir. El otro, son los metodos del objeto que son llamados por el objeto en si, pero todo y eso el programador como siempre tiene que diseñarlo de esa forma, al menos de que ya esten diseñados por otro programador o por el programa.

El valor del retorno es el resultado que el metodo a computado para el uso de cuyo codigo a sido llamado. Es decir, el resultado que computo el metodo gracias a la informacion obtenida de sus parametros, o del objeto en si, como los datos dentro del objeto.

Ejemplo, se crea un objeto y se le dan unos valores, luego el metodo transforma esos valores dada la informacion dentro del parametro y computa un resultado guardandolos en una variable.

DataSet data = new DataSet(100);

//inicializacion del constructor del objeto, luego en el capitulo 3

public int estudios(int num)
{
int temp = 0;
temp = num;
return  num;
{

int classVariable = 0
classVariable = data.estudios(100) + data.variable;

System.out.println(classVariable);

2.6 Construyendo objetos


http://docs.oracle.com/javase/tutorial/java/javaOO/objectcreation.html

Como pueden imagina, las clases son el plano para los objetos, de las clases salen los objetos y de ahi los objetos llaman a los metodos y modifican los objetos.

Punto origenUno = new Punto(23, 94);
Rectangulo rectUno = new Rectangulo(origenUno , 100, 200);
Rectangulo rectDos = new Rectangulo(50, 100);

Aqui se ha creado un nuevo punto de partida para crear un rectangulo. Luego se han creado dos rectangulos , el rectUno, con un punto de origen que tiene la informacion del punto de origen o punto de partida ya creado y el segundo rectangulo sin punto de origen o partida.

Cada declaracion tiene tres partes:

  • Declaracion: Es el codigo asociado con la variable, lo que le da el nombre y tipo de la variable. por ejemplo; Rectanguo rectUno;
  • "Instantiation": la palabra reservada "new" crea el objeto.
  • Iniciacion: El operador new lo sigen un constructor, cuya funcion es la que inicia el nuevo objeto.

Declarar a una variable para iniciar un objeto

http://docs.oracle.com/javase/tutorial/java/javaOO/objectcreation.html

  • El tipo de la variable: La variable tiene que tener el tipo de informacion semejante al tipo de la variable. Esto hace que cuando se declare sea reservada la memoria en su sitio adecuado. Como especificar el tipo de casilla que uno puede ponerle todos los datos similares.

Por ejemplo; Punto origenUno;

De esta forma uno no esta creando el objeto, sino que la referencia del objeto, por lo tanto no habra informacion sino que solo estara refiriendose a algo que no existe, por lo mismo estara nula la referencia.

Para que la referencia tenga su informacion se debe crear cuando se inicialize y tenga ya el operador "new" luego del objeto creado y su construccion deseada.

Es muy importante recordar. Declaracion, Instantiation y Iniciacion. la primera declara el tipo de variable que se quiere tener la informacion, el segundo crea el objeto,  y el tercero inicia el objeto dandole el valor deseado.

public class Punto {
    public int x = 0;
    public int y = 0;
    //constructor
    public Punto(int a, int b) {
        x = a;
        y = b;
    }
}

Esta clase tiene un constructor, crea usando sus parametros, iniciadas las variables de tipo int a y b, para recibir la informacion y luego ser asignadas a las variables de la clase o del objeto que se va a crear.

Punto origenUno = new Punto(23, 94);

La variable origenUno indica al objeto Punto.

public class Rectangulo {
    public int ancho = 0;
    public int alto = 0;
    public Punot origen;

    // cuatro constructores
   //?por que se crean cuatro constructores?
   //porque de esa forma el programador puede modificar, introduciendo informacion dentro
   // de los parametros, al metodo.

    public Rectangulo() {
        origen = new Punto(0, 0);
    }
    public Rectangulo(Punto p) {
        origen = p;
    }
    public Rectangulo(int w, int h) {
        origen = new Punto(0, 0);
        ancho = w;
        alto = h;
    }
    public Rectangulo(Punto p, int w, int h) {
        origen = p;
        ancho = w;
        alto = h;
    }

    // metodo para mover el rectangulo
    public void move(int x, int y) {
        origen .x = x;
        origen .y = y;
    }

    // un metodo para computar el area
    public int getArea() {
        return ancho * alto;
    }
}

Rectangulo recUno = new Rectangle(origenUno, 100, 200);

Ejemplohttp://docs.oracle.com/javase/tutorial/java/javaOO/objectcreation.html

foto de la pagina de Oracle: http://docs.oracle.com/javase/tutorial/java/javaOO/objectcreation.html

?que pasa aqui?
Se crea un objeto Rectangulo con el origen uno ya creado anteriormente y se le inicializa con La informacion correspondiente.

Rectangulo RecDos = new Rectangle(50, 100);

Lo mismo aqui pero sin el punto, ya que se crearon varios constructores con varios atributos.

Rectangle rect = new Rectangle();

Y aqui no pasa nada, pero ya esta inicializado asi que retorna o apunta a un rectangulo sin nada. de 0 0 informacion.




Friday, August 16, 2013

¿Qué es GNU?


¿Qué es GNU?

link: http://www.gnu.org/home.es.html

GNU es un sistema operativo similar a Unix que es software libre y respeta su libertad. Puede instalar versiones de GNU (más precisamente, sistemas GNU/Linux) que son completamente software libre.

Capturas de pantalla de GNU

El Proyecto GNU se inició en 1984 para desarrollar el sistema GNU. El nombre «GNU» (que significa «ñu» en inglés) es un acrónimo recursivo de «¡GNU No es Unix!» y en español se pronuncia fonéticamente como una sílaba sin vocal entre la g y la n.

Los sistemas operativos similares a Unix se construyen a partir de un conjunto de aplicaciones, bibliotecas y herramientas de programación, además de un programa para alojar recursos e interactuar con el hardware, denominado núcleo.

Hurd, el núcleo propio de GNU, está lejos de poderse usar en el día a día. Por este motivo, GNU se usa habitualmente con un núcleo denominado Linux. Esta combinación es el sistema operativo GNU/Linux. GNU/Linux lo usan millones de personas, aunque muchos lo denominan «Linux» por error.

¿Qué es el software libre?

link: http://www.gnu.org/philosophy/free-sw.es.html

El «Software Libre» es un asunto de libertad, no de precio. Para entender el concepto, debe pensarse en «libre» como en «libertad de expresión», no como en «cerveza gratis».

El software libre es una cuestión de libertad de los usuarios para ejecutar, copiar, distribuir, estudiar, cambiar y modificar el software. Más concretamente, se refiere a los cuatro tipos de libertades para los usuarios de software:

La libertad de usar el programa, con cualquier propósito (libertad 0).
La libertad de estudiar el funcionamiento del programa, y adaptarlo a sus necesidades (libertad 1). El acceso al código fuente es un prerrequisito para esto.
La libertad de distribuir copias para ayudar a los demás (libertad 2).
La libertad de mejorar el programa y de publicar las mejoras, de modo que toda la comunidad se beneficie (libertad 3). El acceso al código fuente es un prerrequisito para esto.




Wednesday, August 7, 2013

Java a lo maracucho, Capitulo 1

Source: http://www.horstmann.com/bigjava4.html

Capitulo 1


Metas del capitulo



  • Entender la actividad del programar
  • Aprender la arquitectura de las computadoras
  • Aprender los codigos  de la maquina y los lenguajes de programacion de alto-nivel
  • Familiarizarse con la estructura simple de los programas de Java
  • Compilar y funcionar vuestro primer programa en Java
  • Reconocer los errores de "compile-time" o los de "run-time"
  • Escribir pseudocodigos para algoritmos simples


El proposito de este capitulo es el de familiarizarse con los componentes de la computadora, cuales son sus partes y sus funciones, a la vez del aprender un poco sobre el como la computadora recibe las instrucciones diseñadas para su funcionamiento y calculo. Luego de aprender un poco sobre los componentes de la computadora y el como funciona, la otra parte del capitulo es el aprender un poco sobre el lenguaje de programacion Java, sus mas simples comandos y los tipos de errores que pueden pasar cuando se crea o diseña un programa. Finalizando con algunos tips sobre como empezar a diseñar el programa creando pseudocodigos para los algoritmos simples.

1.1 Que es la programacion?


Source: http://es.wikipedia.org/wiki/Programaci%C3%B3n
Source: http://es.wikipedia.org/wiki/M%C3%A1quina_de_Turing

La programacion es el arte del diseñar por medio de codigos las instrucciones que debe hacer la maquina o el programa; la maquina en general esta programada por medio de codigos de maquina, de 0s y 1s, y el programa, ya que primero tiene que haber una maquina, con un lenguaje mas avanzado.

Un programa de computadora debe de estar programado para hacer una tarea, diferentes tareas requieren diferentes programas. por lo menos, los sistema operativos son un programa en si que dan una tarea en si, dentro del sistema operativa hay otros programas que dan diferentes tareas, y asi sucesivamente.

Un programa de computadora contiene todas las instrucciones en secuencia que puede ejecutar.

La programacion en si es la instruccion que tiene el programa o maquina, por ejemplo; un semaforo esta programado para que por tiempos, automaticamente, se prenda el verde, luego el amarillo y luego el rojo, infinitas veces. En un programa, las instrucciones pueden ser simples; como el sumar, como complejas; el tomar la informacion de millones de personas guardadas en una base de datos y buscar a todos los que tengan el pelo negro, pero primero se tiene que diseñar el programa y darle una serie de instrucciones para que no se tarde tanto tiempo y sea lo mas eficientemente posible.

Por otro lado, los hacker ciberneticos, o los que clonan o ponen chips en las consolas de videos, estos saben muy bien el diseño de las maquinas y los programas, y en varios casos alteran la maquina para que omita una instruccion, o alteran otra instruccion para que de otro tipo de informacion. Ademas eso es otro tema u otra ideologia, como puede ser el hacktivismo, algo que no se en absoluto pero ha creado un nuevo campo de expresion donde las personas pueden defenderse de los programas totalitarios que estan siendo implementados en el mundo, creados supuestamente, o para mantener la seguridad o para controlarnos, eso depende de quien sepa de politica a su vez del uso de la programacion como herramienta politica, criminalizada por la misma dependencia tecnologica que tenemos hoy en dia y no todos tenemos la misma ideologia, algo relevante segun el estilo de vida que uno viva o donde viva.

-Para entender un poco mas sobre las computadoras, es bueno preguntarse que es un programa y que no?

-O como funciona una aplicacion de telefono?

-O, se puede mejorar un programa como Windows, Linux, ios?

1.2 La anatomia de la computadora


Para entender mejor el como esta compuesta la computadora y el como operan sus partes, recomiendo que busquen informacion sobre la introduccion a los sistemas de computadora. Si saben ingles, busque este libro:

Source: http://highered.mcgraw-hill.com/sites/0072467509/

aqui hay unos power point que resumen cada capitulo:

Source: http://highered.mcgraw-hill.com/sites/0072467509/student_view0/powerpoints_nc_state.html

Es recomendado entender los 8 primeros capitulos, y para mejorar sus conocimiento, el resto.

Este libro presenta los conceptos basicos de la computadora, sus componentes y el como funcionan, ejemplificadas por medio de una mini-computadora de 16bits cuyo proposito es el entender el como son transmitidas las intrucciones, como son creadas las instrucciones, donde guardan las intrucciones en la memoria y el como modificar las instrucciones para generar cualquier resultado, o tarea intruida.

En fin los ordenadores con esta arquitectura constan de cinco partes: La unidad aritmético-lógica o ALU, la unidad de control, la memoria, un dispositivo de entrada/salida y el bus de datos que proporciona un medio de transporte de los datos entre las distintas partes.

Un ordenador con esta arquitectura realiza o emula los siguientes pasos secuencialmente:

Enciende el ordenador y obtiene la siguiente instrucción desde la memoria en la dirección indicada por el contador de programa y la guarda en el registro de instrucción.

Aumenta el contador de programa en la longitud de la instrucción para apuntar a la siguiente.

Decodifica la instrucción mediante la unidad de control. Ésta se encarga de coordinar el resto de componentes del ordenador para realizar una función determinada.

Se ejecuta la instrucción. Ésta puede cambiar el valor del contador del programa, permitiendo así operaciones repetitivas. El contador puede cambiar también cuando se cumpla una cierta condición aritmética, haciendo que el ordenador pueda 'tomar decisiones', que pueden alcanzar cualquier grado de complejidad, mediante la aritmética y lógica anteriores.

1.3 Traduciendo los programas a codigos de maquina


Al estudiar los fundamentos de los sistemas de computacion, uno debe de saber que una maquina de 16 bits en sus "registers" tendra solo 16  "registers" especificos, ya que solo se usan los 4 primeros bits del register para localizar el tipo de funcion que va a hacer la instruccion. "16-bit addressable memory with a 216-location address space." una memoria accesable de 16-bit con una localizacion del espacio accesable de 216. 

Sabiendo esto, las computadoras contemporaneas tienen cientos de "registers" cada uno con distintas funciones, y esto predispone al programador a equivocarse, por lo mismo se creo un JVM y compiler que transforman, cada uno complementando al otro, las instrucciones faciles de entender a los codigos de la maquina.

En el lenguaje de programacion Java, toda fuente de codigo esta primeramente escrita dentro de los archivos simples de texto que terminan con la extension ".java" Luego estos archivos son compilados a archivos ".class" por el "compiler" "javac". Los archivos escritos en ".class" no contienen los codigos nativos del procesador, no los entiende, los contiene como "bytecodes" - el lenguaje de maquina de la Maquina Virtual Java o JVM.

El JVM es un programa que traduce, o transforma la informacion o instrucciones que el compiler reviso y transformo del programa principal, en este caso, el programa que te facilita diseñar programas, a los codigos de maquina, para asi poder hacer todo tipo de tarea en la computadora*.

El compiler es otro programa que a lo largo de la carrera de computacion se entendera su complejidad y su manejo, tanto asi que para la maestria, dependiendo de  que clase agarres, puede que te pidan diseñar un compiler.

Source: http://es.wikipedia.org/wiki/JVM
Source: http://docs.oracle.com/javase/tutorial/getStarted/intro/definition.html

1.4 El lenguaje de programacion Java


Source: http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-1.html#jvms-1.1

Este lenguaje de programacion es util si quieres estudiar y aprender los fundamentos de la programacion, el como se crean buenos programas, faciles y claros, para luego darle como una introduccion a otros lenguajes, en cual c++ parece tener mayor relevancia en el area de la programacion, no tanto por su complejidad, sino por su forma que especificar todo tipo de instruccion, lo cual hacerlo, define el nivel de manejo que el programador tiene a la hora de programar. Por eso todas las universidades comienzan con Java y luego se van a c++.

1.4.1 Comienzos de Java


Java se creó como una herramienta de programación para ser usada en un proyecto de set-top-box en una pequeña operación denominada the Green Project en Sun Microsystems en el año 1991. El equipo (Green Team), compuesto por trece personas y dirigido por James Gosling, trabajó durante 18 meses en Sand Hill Road en Menlo Park en su desarrollo.

1.4.2 Filosofia de Java


El lenguaje Java se creó con cinco objetivos principales:

Debería usar el paradigma de la programación orientada a objetos(Objetos Orientados).

Debería permitir la ejecución de un mismo programa en múltiples sistemas operativos.

Debería incluir por defecto soporte para trabajo en red.

Debería diseñarse para ejecutar código en sistemas remotos de forma segura.

Debería ser fácil de usar y tomar lo mejor de otros lenguajes orientados a objetos, como C++.

Para conseguir la ejecución de código remoto y el soporte de red, los programadores de Java a veces recurren a extensiones como CORBA (Common Object Request Broker Architecture), Internet Communications Engine o OSGi respectivamente.

Source: http://es.wikipedia.org/wiki/Java_(lenguaje_de_programaci%C3%B3n)
Source:  http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-1.html#jvms-1.1

1.4.2.1 Que son los objetos Orientados?


Los objetos son entidades que tienen un determinado estado, comportamiento (método) e identidad:


  • El estado está compuesto de datos o informaciones; serán uno o varios atributos a los que se habrán asignado unos valores concretos (datos).


  • El comportamiento está definido por los métodos o mensajes a los que sabe responder 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.

Source: http://es.wikipedia.org/wiki/Orientado_a_objetos

1.5 La estructura de un programa simple


Cuando uno comienza a estudiar un lenguaje de computacion nuevo, es siempre la norma aprender a escribir una frase, como por ejemplo; "bienvenido a la programacion".

1  public class HelloPrinter
2  {
3        public static void main(String[] args)
4        {
5               //  caracteres para comentar sobre el programa
6
7               System.out.println("bienvenido a la programacion");
8         }
9  }

Cuando se crea un archivo, tambien se crea una clase con el nombre del archivo. Esta "clase" como se ven en la linea 1, tiene una palabra denominada "public". "public" significa publica, y tambien hay unas clases que son privadas o "private" que solo pueden ser accesadas por el mismo archivo o clases del mismo nombre, y esto se hace para asegurar el programa de fuentes externas, pero esto se vera mas lejos y con mas entendimiento sobre Java y los fundamentos de la programacion.

La linea 2 comienza con unos braquets "{"  esto significa que debe tambien cerrarse "}". Las clases son objetos que deben de tener instrucciones, y la forma del saber las instrucciones a seguir estan señaladas dentro de los braquets "{instrucciones}". sean clases, metodos o interfaces.

En la linea 3 la primera instruccion escrita es el metodo "public" , "static", "void" llamado "main" que tiende dentro de sus parametros "()" el tipo de datos o "data types" del objeto"[]" "args" que va a entrar, para luego hacer lo descrito por este metodo prediseñado ya por el lenguaje de Java, y gracias a esto devolvera, si el syntax o la logica estan correcto, una respuesta esperada.

Por supuesto, esto sera tambien entendido mientras mas caves dentro de la tierra del conocimiento.

En la linea 5 se ve la forma de comentar dentro de un programa sin afectar las instrucciones del programa. hay dos formas, esta la de una linea, que es "//" o la de un parrafo que tiene comienzo y final, si los colocas mas, el compilador no podra traducir las instrucciones sigueintes, ya que no las entendera e inmediatamente se parara.  abre con "/*" y cierra con "*/" sin comillas por supuesto.

En la linea 7 se ve "System.out" que es el nombre de la clase que se quiere invocar para luego, invocar el nombre del metodo "println" cuyos parametros "()" luego prodras escribir lo que quieras que el metodo "println" este diseñado a hacer.

El metodo "println" te permite imprimir cualquier tipo de letras "strings" que esten marcadas  con comillas "", ademas de que tambien puede calcular operaciones basicas de matematica.

Por ejemplo; System.out.printl("Hola"); imprimira Hola y System.out.printl(3+3); imprimira 6.

Otra cosa es que toda instruccion que tenga una informacion para analizar debe terminar con un punto y coma ";" para que el "compiler" sepa que hay termina la instruccion.

Esta informacion es mas especifica, del como el programa trabaja:
Source: http://docs.oracle.com/javase/tutorial/getStarted/cupojava/netbeans.html

1.6 Compilando y funcionando un programa de Java


Hay varios editores para que la creacion de los programas sea mas sencilla. Esta Netbeans que se puede descargar en su pagina de internet gratuitamente

https://netbeans.org

El programa tiene muchas funciones que facilitan y demuestran cada instruccion, marcadas a priori.

Esta tambien Eclipse: http://www.eclipse.org
Jagrasp, que es sencillo: http://www.jgrasp.org
y para los mas duros, directo del "command prompt" donde solo necesitas tener un notepad, el Java Development kit (JDK) y el manejo de los archivos para eso:
Source :http://docs.oracle.com/javase/tutorial/getStarted/cupojava/win32.html

*Ojo, todos los editores necesitan del JDK, en este esta el compiler entre otras mas utilidades necesarias para el JVM.

Source: http://docs.oracle.com/javase/7/docs/technotes/tools/index.html#general

*El programa es sensible al uso de caracteres, por ejemplo; no es lo mismo "a" que "A", y esto se sabe cuando se estudia un poco el como estan codificados los caracteres ACSII.

Source: http://es.wikipedia.org/wiki/ASCII

Todo esto define la ubicacion de la referencia en la memoria o la informacion en la memoria, dependiendo del "register" que se use.

TIP: Cuando se este diseñando un programa o se haya terminado o como quieras, siempre ten el archivo del programa guardado como respaldo porsiacaso le pasa algo al archivo o programa original, o cuando se trabaje en este y se borre por error.

1.7 Errores


Hay dos tipos de errores cuando se programa, uno es el error de sintaxis, este que pasa cuando se escribe algo que no este definido o se omite, llamado "compile-time". El otro error es de logica. Cuando describen erroneamentes los pasos que un programa sigue o cuando el resultado no se asemeja en nada lo esperado, un "run-time error"

"compile error" errores de sintaxis o no establecidos en el programa.
"run-time error" errores de logica.

1.8 Algoritmos


Los algoritmos son las instrucciones logicas y matematicas que uno le da al programa para que haga su funcion predeterminada.

Para esto es recomendable primero entender el programa, ver de que se trata el problema e ir luego trabajandolo de arriba-abajo.

Cuando se entienda el problema se escribe un pseudocodigo, esto significa escribir los pasos mas importantes para ejecucion del programa, y luego trabajar en sus detalles con mas calma.

Esto es tambien llamado trabajar de arriba-abajo, de las metas a los detalles.

Como sabemos cuantas personas saben manejar?

Buscando todas las personas que sepan manejar. duh.
Pero para eso uno tiene que buscar la poblacion entera e ir preguntando.

Y ejemplos asi que uno con el tiempo entendera.

vease, Interpretacion de la clase de programacion metodologica 01.

http://tecnolecciones.blogspot.com/2013/07/interpretacion-de-la-clase-de.html













Tuesday, July 9, 2013

Interpretacion de la clase de programacion metodologica 03

Lista de videos de la metodologia de la programacion

Tercera interpretacion de las clases de metodologia de la programacion por Meheran.

0.25

-Profesor Meharan comienza dando un breve resumen del programa Karel y sus funciones.

-Explica como todos archivos donde fueron implementado los codigos del programa Karel terminan en .java

-Karel esta implemtado en Java

-El profesor Meharan imita a un estudiante diciendo, "hey se algo de Java, puedo trabajar con el programa?"

-luego, responde que no, lo unico se se usaran son las funciones o firmas predterminadas en el programa.

*El programa de Karel es un programa creado exclusivamente por los estudiantes y profesores de Stanford, y por lo mismo se encuentra en el eclipse modificado para la misma universidad.

-El profesor Meharan continua explicando que lo aprendido en Karel es solo la introduccion a la metodologia de programacion, y ya la proxima semana comenzaran a ver el contenido principal, despidiendose asi de Karel, quien a su vez donosamente simula la despedida del programa.

1.09

-El profesor continua diciendo que si conocen de Java o programacion, por lo momentos solo enfoquence en lo aprendido de Karel, que todo lo que se conoce de Java sera enseñado

-Alguna pregunta antes de comenzar algo nuevo?

-un estudiante le pregunta sobre el programa de Karel.

-Como se detiene el objeto, o Karel, luego de terminar su funcion?

-El profesor responde que se cierre la ventana, el programa esta diseñado para que cuando termine su funcion el usuario detenga el programa cerrando la ventana.

*o todavia no han implemantado una funcion que cierre el prgrama sin afectar la ventana.

-Luego el profesor atribuye esa pregunta para comenzar el tema sobre los errores comunes.

2.03

-los errores comunes son todos aquellos que uno se encuentra cuando amenudo.

-Asimismo le pregunta a los estudiantes sobre las indicaciones de un producto de limpieza.

-Cuantos aqui han leido las indicaciones de un Shampoo, que estan detras de este?

-el profesor se sorprende al ver que mucha gente alzo la mano, respondiendoles en su caracteristico modo ligero y donoso que deberian salir un poco mas.

-los estudiantes reian.

-Luego el profesor va al punto escribiendo en la pizarra los pasos a seguir, ejemplificando los pasos a seguir de quellos que usan el shampoo.

-Escribe, que los pasos son: Enjuaga, enjabona, repite.

-Deduse que si se escucharian o acatarian las ordenes o pasos como se han predeterminado, nadie saliera de sus baños.

-Esta conotacion significa un loop infinito o un ciclo infinito.

3.13

-El profesor luego empieza a escribir algunos codigos referentes al programa Karel que son :

//   while(frontIsClear())
//    {
 //        turnLeft();
//     }

*Que significa: sige calculando hasta que el frente este libre, sino entonces cruza hacia la izquierda.

-Pregunta entonces: que pasaria si esta cerrado?

-Se encontraria, o nos encontrariamos en un "loop infinito"

-Por lo mismo nos encontramos con un error comun, donde el sintaxis, la forma de escribirlo esta bien pero la logica no.

4.29

-Con su personalidad jocosa el profesor Meharan comenta sobre un comercial donde presentaban un procesador que podia resolver esos loops infinitos en 2.9segundos, continuando que si, pues el prosesador tenia un defecto que se sobrecalentaba demaciado y se fundia, validando el  comercial, ya que el loop infinito era detenido cuando se fundia el procesador.

-Los estudiantes reian.

5.19

-Otro de los errores comunes que nos encontramos en cada programa se trata del "por un solo bicho" que no arranca el programa o no da el resultado deseado. en Inlges, "Off by one bug" o coro por "OBOB"

-OBOB significa que el programador se le olvido o no vio logicamente el paso siguiente para dar con el resultado.

6.00

-El profesor presenta un escenario donde el programa tiene un OBOB

-El escenario es el siguiente: imaginese 5 pasos y en el 5to se encuentra una pared, el metodo esta diseñado para parar en el paso donde se encuentra la pared, pero el metodo esta escrito que LUEGO de pasar por ese paso se DESCARGA un objeto, lo que no terminara la funcion, ya que tiene un OBOB, o un BICHO o BUG logico.

-En este caso el estudiante tiene que analizar todo tipo de escenario antes de que se encuentre con este, o trabajar mientras se encuentran los errores.

*unas de las caracteristicas de los programadores profesionales es la del pensar mucho e investigar mucho antes del empezar a copiar metodos y codigos esporadicamente, el presentar un plan y un flowchart.

-El problema en este caso es sencillo, crear una especie de opcion en el metodo donde cada vez que se presente una situacion donde se llega al final, se pueda luego depositar el objeto y terminar asi la funcion deseada.

*Claro, la programacion es arte y cada quien tiene su tipo de programar dado el resultado deseado, pero en compañias o en el area laboral se siguen algunas relgas especificas como la del organizar nitidamente el programa o el comentar en los codigos para que la gente que este contratada para seguir actualizando el programa sepa que hacer y porque.

7.41

-Asi como el profesor Meharan explica los problemas comunes tambien llega a la funcionabilidad de los comentarios y el como se crean.

-Los comentarios como descritos anteriormente ayudan al programador a ver que funcion tiene el codigo escrito y se crean usando este tipo de simbologia.

// para comentarios de una linea
/* */ para comentario de parrafo, donde se abre con /* y se cierra con */

9.00

-Algunos estudiantes verifican lo aprendido, como el poner los comentarios en los metodos para saber que hace el metodo.

10.23

-*Otra funcion de los comentarios, ejemplificada en el programa de Karel y de los ejercicios que tiene todo estudiante que hacer para aprender a usar estos metodos simples y el como maquinar, logicamente los resultados y el ver como se reusan los metodos para no crear tanta basura ni que sea facil que una fuerza externa, como los hackers, entiendan el programa facilmente y lo modifique y te modifique el programa y se pierda todo lo creado y trabajado, es el de simplificar todos los metodos y rehusarlos exageradamente solo para la funcion deseada.

*esto se aprendera con el tiempo, por los momentos se tiene que hacer los programas como se les manda, aprender de estos y luego de terminado, asimismo mandan las indicaciones, jugar un poco con otro tipo de soluciones, ya que el tiempo para crear un programa, asi como lo mandan el clase varia por medio de la educacion, diciplina e ingenio que uno tenga al programar y a las fuerzas abstractas de la mente logica y cientifica. Un trabajo para todos, pero con mucho magnetismo para aquellos que les encanta la matematica o cualquier otro tipo de habilidad de las ciencia fisica o quimicas de nuestro progreso hacia la tecnologia.

-Los comentarios son escencialmente descripciones de los que no esta implicitamente descrito en el programa, ademas de su descripcion.

12.44

-Una de las tareas del programador antes de trabajar en el programa es el dscomponer todas las funciones del programa en partes y el trabajar luego por separado en cada una de esta, para luego y ir uniendolas y trabajando en la funcion en general.

-El profesor Meharan explica con un ejemplo comun, el de como se llego a la clase. Ejemplifica la vida de un estudiante diciendo de que primero este se despierta, se baña, come, camina o oma el bus y luego entra a clase, cada una de esas funciones tienen sus metodos y codigos para llegar a la clase o resultado, entonces uno como programador tiene que ver lo MACRO y lo MICRO de cada programa, por union o individualmente, buscando siempre el codigo escencial en cada funcion.

-Esta serie de planes se llama "Pasos sabios de refinamiento", o en ingles, "Stepwise refinement" y significa que cada accion tiene sus metodos, y que cada metodo tiene su funcion, y que cada funcion tiene sus variables, o llama a otros metodos, grabando o no la informacion segun el tipo de sus metodos, cuales esta los "Mutadores" o en ingles los "Mutators" como los "accesadores" o en ingles los "Accesors".

*Los mutadores generan informacion y dan una respuesta.
*Los Acesadores generan su funcion y ayudan a los mutadores a dar respuesta.

-Las funciones mas basicas de un metodo son llamadas las funciones primitiva, aquellas que son usadas para la implementacion del metodo.

*Como por ejemplo en un metodo de agarrar algo, el los codigos escritos que hacen que este metodo agarre algo.

17.49

-Para realizar un programa el profesor Meharan explica los que es la "Descompocision" del programa, el descomponer el programa en varias partes.

-Luego habla sobre "El diseño de arriba hacia abajo" o en ingles, "Top Down design" que significa el trabajar en el programa de sus funciones principales a sus funciones especificas.

-Como lo contrario, que se llama "Diseño de abajo hacia arriba" que significa el trabajar desde las funciones espeficicas hacia las mas generales.

-El profesor Meharan explica tambien el nivel de preparacion que un estudiante necesita para trabajar con las formas de Descomponer el programa y dice que los principiantes comienzan a descomponer el programa de arriba hacia abajo y luego por su nivel de competencia llega a trabajar de abajo hacia arriba. pero en si es relativo dado el nivel de comprencion del estudiante, lo que si es cierto es que se ha demostrado bajo estadisticas que los estdiantes se tardan 100horas en pasar de arriba abajo a abajo arriba.

19.29

-El profesor Meharan invita a los estudiantes a crean un programa diseñado de arriba hacia abajo.

-Para este ejercicio el Profesor demuestra nuevamente el programa de Karel cuyo proposito esta vez es el de duplicar el numero de objetos que se encuentre en la via.

-En el programa la primera fila tiene una casilla que tiene 5 objetos y nada mas. El ejercicio debe de terminar con el doble de objetos en la misma casilla, osea que 10 objetos en la misma casilla.

-Para eso uno debe de programar a Karel con la funcion de hacer lo pedido y este metodo se denomina como el algoritmo de aquella funcion, el crean una funcion que calcule y opere un fin numero de datos para dar un resultado esperado, bajo las especificaciones del programa y esto se prepara con otro sin numero de pruebas o ejemplos, primero sencillas, y luego un poco mas complejas, para ver si el programa responde con los resultados esperados, y asi luego y perfeccionando su simplicitud y practicidad.

-En terminos de computacion el algoritmo significa el acercamiento a la respuesta especifica trabajando con la metodo del resolver los problemas de arriba a abajo, o de en general hacia lo mas complejo y detallado.

22.00

-El profesor Meharan usa este programa de Karel y comienza con una clase que extiende la clase original de Karel en la que le define o extiende algunos metodos espeficicos para la elaboracion de la funcion predeterminada que desea el operador que haga el programa.

-En esta clase el profesor Meharan crea unos metodos especificos a la funcion que quiere extenderle al programa de Karel.

-usa el metodo "run" para que Karel se mueva como uno quiera y dentro de este las funciones que uno quiere qu Karel haga si se encuentra algo definidos con otros metodos.

-Estos otros metodos son el de "tomar" o "agarrar" los objetos o "beepers", el otro es el de "retroceder" luego de encontrado el fin de la fila y llegar al comienzo, y el ultimo es el de "duplicar" los objetos en el mismo lugar donde fueron encontrados.

-Para esta serie de problemas el programador debe de emplear una serie de algoritmos que, el programa, u objeto en este caso llamado Karel, tiene que hacer para satisfaccer las demandas del ejercicio.

-El como hacer eso depende de cada estudiante, de su logica y del como resuelve los problemas generales de forma abstracta, con esto un por eso comienza de los mas elemental hacia lo mas espeficico, de arriba a abajo.

-Y el saber muy bien las limitaciones del ejercicio y la forma de ensamblar las piezas del rompecabezas, puesto que la programacion en cierto caso es eso, el armar un rompecabezas y ver el dibujo terminado, o la funcion del programa satisfecha.

27.00

-El profesor Meharan hace incapie en que los programas u objetos mas efectivos son los que no recuerdan nada sino que colocan momentaneamente los resultados de un lugar predeterminado a otros, y mientras mas cerca y rapido sea ese lugar o memoria, mejor, ya que asi no podra ser tan facilmente decubierto por hackeadores que modifican o roban informacion.

-En ese ejemplo el profesor Meharan le recuerda a los estudiantes a que el objeto o Karel no sabe contar, asi que no lo programen como contador sino como administrador, el que mueve las cosas de un lado a otro segun sus funciones y el que hace una serie de algoritmo o cumputaciones simples, pero no de memoria pues no tiene memoria.

-Por ejemplo, un estudiante le pregunta que si Karel puede grabar el numero de "beepers" en si o crear una funcion que asi lo haga, y este responde que Karel no graba informacion, pues solo genera "beeper" son infinitos y infinito mas lo que se le ponga seguira siendo infinito, y que mejor que crear una funcion que grabe y sea facilmente modificada por otra persona es el dejar el resultado cerca, en una especie de momentum, pseudo memoria donde se grabe, pero no en ninguna variable u objeto especifico al menos sea predeterminado en el ejercicio.

-Por lo mismo este programa o ejercicio hace incapie en que Karel haga el proceso de duplicar los "beepers" de una celda a la sigiente de forma separada hasta no encontrar mas "beepers" y haber luego duplicado la cantidad para luego ponerlos todos en el sitio donde encontro la mitad de los "beepers" paso por paso, funcion a funcion.

-Primero agarra un "beeper" y se mueve a la celda siguiente y pone luego dos en esta, luego retrocede al mismo sitio y si ve un "beeper" mas, hace la misma tarea hasta no encontrar mas "beepers" para luego agarrar el bloque de los "beepers" duplicado y colocarlos en el mismo sitio poniendo uno a otro, agarrando un "beeper" de la celda siguente a la anterior hasta el no encontrar mas "beepers" y asi terminar la funcion y devolverse al lugar donde comenzo.

34.00

-El profesor Meharan explica la importancia del como documentar los programas con un ejemplo mal hecho donde el codigo no tiene comentario ni esta dividido en metodos, separados por secciones ni tiene la funcion escrita de cada metodo ni nada de eso, diciendo que en el area profecional un comienza un codigo o un programa y que uno se puede saber todo al respecto pero cuando llega otra persona que no sabe lo que pasa y ya uno esta trabajando en otro codigo entonces se les es dificil decifrar el codigo, perdiendo asi tiempo y esfuerzo en algo es un deber del que programa.

38.00

-El profesor Meharan explica los principios de la "Descompocision":

*resuelve un problema por paso.

*Puede tener de 1 a 15 lineas de codigo, dependiendo de su funcion y su dependencia entre otros metodos o clase, solamente para diferenciarlo de los demas.

*Tiene nombres especificos a la funcion que se va ha hacer.

*Llevan comentarios.

43.00

-El profesor hablar sobre el ejercicio que le deja a los estudiantes donde Karel se encuentra con una serie de escenarios en los cuales este(Karel) encuentra un "beeper" y lo recoje o desaparece, celda por celda por cada columna que tenga el escenario.

-El problema principal es el recojer los "beepers" el secundario es el de pasar por las columnas y el final es el saber detenerse.

-Entonces el profesor Meharan explica como Karel primero ver si tiene un "beeper que recoger para recogerlo y luego crea un "loop" mientras se mueve para ver si ha llegado al limite de esa columna, luego Karel ve si tiene el techo, lo que significa que el escenario ha terminado, sino da una vuela de 180 grados y sigue su funcion hasta el limite de la columna donde revisara la funcion de forma negativa o complementaria, revisando si el techo, o en este caso el "no" techo esta presente para continuar, hasta encontrarlo y terminar.

Wednesday, July 3, 2013

Interpretacion de la clase de programacion metodologica 02

Lista de videos de la metodologia de la programacion

Segunda interpretacion de las clases de metodologia de la programacion por Meheran.

0.0min

-El profesor comienza la clase presentando a su hijo como introduccion graciosa para hablar de Karel. el programa del java.

-El profesor habla sobre algunos requerimientos del como entregar el trabajo, uno, fisico para escribirles comentario y otro electronico, para correr el programa.

-Habla tambien sobre la lectura del la seccion llamada Karel, el robot.

4.0min

-Habla sobre el vocabulario de Karel, sus 4 comando que entiende Karel.
-move
-turnLeft
-pickBeeper
-putBeeper

-Meharan alegra un poco los comentarios al hablar jocosamente de las acciones que puede hacer el programa dado sus comandos.

7.0min

-Comienza el programa en el programa de eclime editado por stanfor.

8.43min

-Escribe las acciones que debe de hacer el robot de forma visual, de la forma escrita para luego transladarlo al lenguaje de programacion.

-Esto se llama un algoritmo, una receta, el escribir las acciones para luego trasladarla al lenguaje de programacion.

-El programa de karel trabaja de forma "interfase" una interfase es una parte del programa que interactua con el programa y por medio de sus metodos define las acciones a tomar.

-Por ejemplo, en el programa de Karel, la interface ordena al robo, o al programa, a hacer lo que el usuario quiere qe haga el programa o el robot. el robot en este caso es una imagen, un obejeto predisennado, un nodo, o un simple objeto que tiene una imagen, esta cordinado dentro de un objeto que tiene las dimensiones espeficicas, llamado entorno o panel, cuyo objeto tambien interactua con el objeto que movemmos, llamado Kerel.

-Este robot, o objeto llamado Karel tiene solo 4 funciones, las de arriba, y cada vez que encuentra un dato, sea el que este predeterminado a encontrar, este obejeto lo analiza por medio de sus metodos implicitos y por medio de estos es que podemos, nosotros, colocar nuestros metodos explicitos y asi, continuar el objetivo planteado.

-La interaccion entre los comandos explicitos que le damos al robot por medio de la interfase y los metodos implicitos del programa prefabricado, hacen que podamos entender el como contruir metodos y el como pensar de forma metodologica acerca de la creacion interactiva de la programacio, ya que su principal funcion es la del recojer datos, analizarlos, y expresarlos de forma visual o electronica(codigos o numeros, dependiendo del uso y secreto).

-Esta interaccion nos da una sennal que debemos aprender durante nuestra carrera como programador, y esta es el como manejar y el recojer datos, el como manejar programas a nuestro comando y el como llegar al resultado de una forma eficiente y totalmente compacta, usando el minimo comando de metodos para asi proteger al programa de intrusos o saboteadores.

11.38min

-Lo anterior funciona tambien el un programa que se haga usando una interfase. pero lo que este programa hace es tomar el programa original y extenderla, haciendo una inheretance, al programa que se esta haciendo.

-Una extension o inheretance, es como dice la palabra una extension o herencia que pasa de un programa a otro y este recibe o hereda todos los comando del programa original, mas los nuevos que se puedan hacer.

-Por lo mismo ya el programa original tenia un metodo llamado "run" que significa "correr" o "comenzarlo" y dentro de este uno coloca lo 4 comando heredados del programa origina Karel.

-Un ejemplo de la "inheretance" o del "heredar" es el siguiente: uno crea una maquina que haga un determinado tipo de circulos, pero a uno de los circulos le colocas un palito extra o lo pintas, el circulo tiene las misma propiedades principales que las los demas circulos con otro tipo de propiedades extra que uno le ponga. de eso se trata el "heredar" o "extend" un programa a otro sub-programa, ya que el sub-programa tiene los mismo metodos o comandos, mas los adicionales que se le pongan.

15.55min

-Uno de los requerimientos esteticos de un buen programador se trata del crear un codigo leible y visiblemente limpio para que los siguientes programadores o uno mismo pueda con facilidad leer el codigo, entender su objetivo y el realizar cambio segun el nuevo requerimiento, todo esto se tiene que documentar de una forma simple y eficiente usando frases conocidas.

-Un ejemplo del como comentar en Java es:
//metodo para mover el objeto
usando el "//" y luego colocando el comentario.

-Hay varios tipos de formas como colocar metodos. esta el  "/*  */" que abre y cierra un espacio para comentar. cuidado con no cerrarlo pues el compiler no sabra cuando se cierra el programa y vera como todo el programa como un comentario sin final.

-El programa Karel viene exclusivamente de la universidad Stanfor, para que los estudiantes estudien, y este programa esta en la libreria del programa Eclipse para stanfor, viene ya implementado en la libreria de Stanfor, pero de lo contrario, si uno quiere hacer un programa y usarlo para asi crear una subclase de este, editarlo sin modificar su contenido y extender su funcion, uno puede guardarlo en la libreria de cualquier programa para programar y luego llamarlo escribiendo su ubicacion.

-Para llamar y crear una subclase del programa, el usuario tiene que ubicar el programa llamandolo desde el inicio del programa que se vaya a hacer, nombrando primero a "import" para importar su contenido, y luego colocando la localizacion del programa deseado.

21.45min

-Le preguntan al profesor Mehran sobre colocar otros comandos, ya que hay 4, y este responde que cuantos uno quiera, pero solo usando estos 4 basicos.

-La programacion no tiene limites, ni tampoco la imaginacion, ni la capacidad logica ni mental de la persona, lo que tiene limitie es la misma discapacidad para renunciar a la accion o hecho querido, pues, el no resolver un problema no significa que no tienes las herramientas para volverlo a hacer, ni tampoco que solo unos tienen ese don y otros no, la capacidad para crear y resolver problemas viene primero de la practica y del error. del tambien saber cuando uno ha perdido y estudiar los errores y comenzar de nuevo, buscando otro camino o el mismo, todo depende de lo que uno busque en realidad.

-El querer ir a la luna hace tanto al astronauta ir como al cientifico y mecanico ayudarlo a ir, como el que atiende a los astronautas para que vayan sin ningun tipo de problemas y asi sucesivamente, o como el que apoya al astronauta, el ir a la luna no significa la tarea de una persona y una persona lo puede hacer y otras no, el ir a la luna significa el trabajo en equipo el saber que funcion hacer y hacerla a su perfeccion o en busca de esta sin presionar o tensarse mucho como para producir un ambiente fragil, negativo y destinado a la destruccion de otras metas de otras personas u organizaciones. por lo mismo, el saber detenerse o el saber buscar las batallas es uno de los principios del lider.

-Claro, la obsesion en cierta forma presiona al movimiento o individuo a la meta, pero tambien la aparta de esta misma. no obstante luego de pensar, dado el privilegio del tiempo en una forma alternativa de resolver algun problema, a veces se encuentra la solucion ya que el ejercicio, tanto mental como corporal, esta acostumbrado al trabajo y este resuelve dado problema por medio de esta misma practica y conocimiento adquirido atraves de la misma practica y trabajo.

-Por supuesto, en circuntancias de tiempo, la agilidad mental y corporal es un reflejo y este los majena quien ha tenido la experiencia para hacerlo.

29.03min

-El profesor Mehran habla filosoficamente sobre la forma de calcular que tenemos aveces cuando nos estamos despertando.

-Dice que en las mannanas comenzamos el dia calculando las operacion que vamos a hacer determinadas por el tiempo que tenemos para llegar a nuestro lugar.

-Primero nos depertamos a una hora determinada, vemos que tenemos un tiempo para el acearnos, vetir y comer, salir y llegar al sitio, pero mediante que nos despertamos, tambien tenemos suennos y aveces la gente quiere dormir un poquito mas, por lo mismo calculan que se puede dejar de hacer para extender el suenno o la pereza y llegar a tiempo al lugar, determinando por supuesto el nivel de requerimiento que necesita el sitio estar, por lo general este ejemplo es para los estudiantes.

-Por lo mismo uno calcula para extender el proceso de dormir y llegar a tiempo al clase. este ejemplo da inicio al una de las herrramientas o metodos que tiene el lenguaje java para agilizar el proceso de un tipo de operacion repetitiva llamado el "for loop" que calcula cuantas veces sea necesario una instruccion  hasta llegar a su determinado numero de calculaciones determinada.

-Este "for loop" es un metodo que tiene el siguiente instruccion del: iniciar una variable segun un numero especifico, el verificar por medio de la comparacion, del si la variable es igual o menor que el numero de veces que se necesite iterar o calcular para  luego ejecutar cualquier tipo de problema.

-Ejemplo. for(int i = 0; i < 10; i ++){/*comienza la operacion*/}

-Un "foor loop" puede ser modificado al gusto de la instruccion deseada: reducir hasta llegar a cero, y uno puede colocarles los datos tomados del parametro, etc.

34.15min

-Otro tipo del iterar cuantas veces sea necesario para ejecutar una instruccion es el de usar el "while loop".

-El "while loop" itera cuantas veces sea necesario mientras la condicion no sea encontrada. una condicion es una instruccion o metodo que se crea para salirse del metodo ya que ha dado con el resultado deseado o ha terminado con el posible numero de veces deseado. el "while loop" se usa para operaciones donde no se sepan cuantas veces se tiene que iterar. y en el programa de Karel encontramos varias condiciones indispensables para resolver los trabajos y problemas.

-Otra de las formas de comparar condiciones es por el uso del "if"

-El "if statement" da la instruccion del comparar las condiciones y el ver si la condicion ha sido encontrada o no.

-Una de las razones por las cuales se usa el "if statement" es para ver si la condicion NO ha sido encontrada y realizar la instruccion escrita. si NO ha sido encontrada se elabora una instruccion y si ha sido encontrada se hace un "else" como "si no se encuentra, entonces has " que significa "if, else".

-Una condicion if puede tener otras condiciones if como instrucciones para verificar la falta de objetos buscados, el ver si un objeto no tiene nada "null" o si no es un objeto que tenga las mismas variables, etc.

-El profesor Mehran explica el como usar los metodos y sus instrucciones para resolver el problema.

-En este problema el profesor nos desmuestra el como el Karel, dado un ambiente predisennado, tiene que pasar por unos obstaculos hasta llegar al final.

-En el programa se usan varios metodos y la mejor forma del eleborar metodos es primero pensandolos de forma comun, el como los haria uno en la vida real, o el como usar la logica para hacerlos paso por paso.

-Primero sabemos que son 9 obstaculos que se tienen que pasar, entonces se escribe un "for loop" con esta instruccion, luego se tiene que pasar el obstaculo, y el como hacerlos demuestra el grado de logica que le podamos llevar al programa para resolverlo.

-Segundo, el pensar como resolver el primer problema, el que hacer cuando nos encontramos con un obstaculo, luego el que direccion tiene el obstaculo y el como hacer para pasarlo, el cuantas veces nos tenemos que mover para hacerlo y el como hacerlo, que hacer cuando lo pasamos hasta para la cantidad predeterminada.

-Siempre trata de resolver los problemas logicamente, calcular la solucion y luego el implementarlo en la programacion.

Interpretacion de la clase de programacion metodologica 01


Clases de Java por Mehran Sahami, gracias a la universidad Standford.

lecture 1 Programming Methodology.

-El profesor Mehran Sahami introduce las guias de la clase, algunas descripciones sobre el formato de las clases en linea y que se va a ver y quien lo va a ver, diciendo que ademas de estar para el publico, puede que lo vean algunos profecionales de Silicon Valley: la ciudad de las computadoras y quienes las hacen y mejoran su funcion, refiriendose a quienes vayan a hacer algun tipo de pregunta donde solo la voz del estudiante sera escuchada.

-El profesor Sahami, o como quiere que lo llamen, Sahami, siendo agradable para la clase y los conectador por la red, explica el porque la clase se llama programacion metodologica, y esta se llama asi porque no solo usa el lenguaje de Java para poder crear un programa, sino que tambien se va a aprender los principios de la programacion, el como usar la logica y el pensamiento critico-abstracto, para crear programas simples y de rapida ejecucion.

-Un programa de computadora tiene como finalidad procesar y recibir informacion y analizarla lo mas rapido posible, y los mas eficiente que se pueda, la tarea de los programadores es el crear programas de acceso cotidiano y no tanto e implementarlos a la recoleccion de datos para su analisis y efecto, sea creativo para entretener, como estadistico para generar un resultado economico de lugares, sociedades o hasta paises, es su complejidad y e interconectividad entre las mainframes o supercomputadoras y los servidores de cualquier casa, negocio o coorporacion de cualquier tipo.

-Meharan habla sobre el como los buenos programadores se comparan con los bueno escritores de ensayos, ya que el escribir o programar o saber el lenguaje no hace a uno un buen escritor o un buen programado, lo que hace a uno un buen programado o un buen escritor es ser uno, y como lograrlo? por medio de la practica, practica, practica, el estudiar paso por paso cada paso para llegar a serlo.

-Una de las formas mas eficientes de estudiar es tomarse el tiempo necesario para entender cada paso, no ir apurado, pero tampoco retrasarse como para no entender el nuevo paso. una de las estrategias es el grabar la clase y practicar la clase antes y despues de clase, buscar ayuda y no creer que se sabe mucho cuando en la vida estudiantil uno esta para estudiar y aprender.

-Uno de los comentarios que hace Meharan sobre la educacion, sacado de las peliculas de Star Wars del segundo capitulo, donde Yoga le dice a Skywalker que para aprender uno tiene que desparender. desaprender los habitos caracteristicos de una mala disiclina y mala implementacion. pero en cierta forma con la practica se eliminan estos malos habitos de programacion.

-Uno de los beneficios que tienen en esa clase es que esta disennada para que todos la pase, y continua con un ejemplo de algunas clases, en algunas universidades donde solo una tercera parte de la clase va a pasar, esta no, en esta, repite, que van a ayudarlos a todos a pasar gracias a que en la clase cuentan con varios asistentes que quieren terminar con su grado de maestria.

-En esa clase la unica competencia que hay es la de uno mismo, ya que no habra este tipo de curva donde los estudiantes con mayor nota establecen un polo y los de menor el otro, dandole asi una nota promedio y una base para calificar al resto.

12.00min

-Meharan habla un poco de la diferencia de los tres clases que hay en la universidad Standford, la que ensenna metodologia, la que intruduce al estudiante a la computacion con objetivo generales sobre la computadora y el usuario, la computadora y la sociedad, ect. y la avanzada para estudiantes con experiencia en la programacion ya que es la union de dos clases, en esta clase avanzada se empieza con el lenguaje de programacion llamado c++ que para los que no sepan mucho, es un lenguaje donde el programador tiene que crear las referencias y estar pendiente de estas. las referencias son la posicion que tienen las variables en el programa, y las variables son los espacion en la memoria o programa donde uno guarda la informacion.

14.00 min

-Merahan habla sobre el grado de dificultad de las clases y aconseja a que tomen la que quieran, no obstante, la intermedio, si uno sabe algo de programacion y quiere aprender a programar segun los parametros de las fuente academica, esta es la clase. continua diciendo que en este tipo de clase estudio el y no tuvo ninguna dificultad en terminar su carrera de programador. tambien expresa que la gente que toda la clase avanzada tienen en su cabeza la meta del siempre resaltar mas que los demas, o porque se les hace demaciado facil y no tienen tanto tiempo para comenzar a aprender algo generico y quieren aprender algo detallado y que los desafien intelectualmente. dice esto para apaciguar el posible estres que algunos estudiantes con poco historial en la programacion tengan y tambien alentar a seguir en el curso a aquellos que manejan la programacion a su forma pero no saben mucho sobre la teoria.

-Escribe donde pueden buscar mas informacion sobre la clase: www.stanford.edu/class/cs106a/ por ahora no hay nada.

-Supuestmente hay 7 tareas para la clase, sino encuentran tareas, busquen algunas en libros de programacion y haganlos, esta clase ensenna la metodolia y el como leer y entender los leguanjes de computadora, que son, semejantes en cierta forma, por otro lado, totalmente opuestos, pero la forma de pensar en programacion tiene una base, y esta clase nos prepara para eso por medio de progamas en Java.

-El programa que se usa para escribir programas es Eclipse.

-La forma de calificar las tareas son por medio de simbolo de mayora a menor como + que es el maximo, un programa hecho limpio, sencillo y funcional, los demas son V+, V, V-, -, y -- que son aquellos programas que no han sido trabajados con ningun tipo de interes ni detalle. y el 0, aquellas personas que no hisieron nada.

28.00 min

-Habla tambien de la extensiones que tienen los estudiantes para entregar las tareas algo tarde de la fecha en la deben de ser entregados. son 3 dias de gracia que dan para entregar un trabajo tardeo. las extensiones deben de usarse delicada y meditativamente ya que solo hay dos, y deberian ser usadas en casos extremos; uno porque el estudiante podra retrasarse en la clase y otro para justificar un problema que este mas alla del estudiante, como una tragedia familiar o enfermedad, o prioridades academicas que por lo general uno deberia de organizar mejor el tiempo que tiene con respecto al horario academico, el estudio y el trabajo. recuerda que 5 annos no es mucho en la vida de una persona que por promedio puede vivir 70 annos, y estos 5 annos son esenciales en el progreso y realizacion de una etapa vital de la vida. lo otro seria un tecnico dado que la vida no es tan facil y se necesita el dinero para poder vivir, el otro seria el tecnico, trabajar y luego estudiar una carrera paso por paso para realizar una meta o suenno que se tenga, como el aprender mas sobre un tema, el prestigio de la carrera y la aceptacion de uno mismo a una sociedad competitiva y que necesita profesionales en distintos tipos de areas. lo que tambien uno puede estar buscando en la seguridad economica mas la seguridad personal que conlleva tal camino hacia la felicidad que se busca atravez del estudio y el trabajo.

36.00 min

-Habla sobre el crear su propio programa o codigo, el codigo significa el programa en la terminologia de los programadores. el copiarse de otros programas es una pena que se castigara ya que no se puede diferenciar quien en verdad hizo el codigo, por lo mismo a ninguno de estas personas no se les calificara. una de las causas del copiarse es el no trabajar como se debe y el no practicar. el no trabajar como se debe, es el no saber estudiar, el no tener una diciplina de estudio, la diciplina del estudio es aquella que requiere practica, el sentarce y leer continueamente el materia, pensar en su contenido, analizar el tema, desglozarlo, ejercitarse por medio de ejemplos y el trabajar en los problemas de cada objetivo, sea cual sea. un objetivo puede ser el buscar el significado de una palabra y el entenderla, un objetivo puede ser el resolver un problema de matematica o de quimica, el persistir hasta resolverlo, analizar sus datos y el buscar una respuesta, luego estudiarla, continuar con otro problema, practicar, practicar, practicar. y mejor se trabaja en grupo luego de que ya uno ha practicado individualmente sobre el tema, escribir algunas problemas que no se pudieron resolver o no se entendieron a su perfeccion y discutir su resolucion, entender su significado. esto son solo algunas formas del como estudiar y poder crear un codigo unico, el profesor acepta la participacion de estudiantes para estudiar y mejorar el aprendizaje pero no el copiarse, y uno se copia cuando no trabaja ni practica.

39.00 min

-Otra de las caracteristicas de los estudiantes que se copian puede ser su irregularidad al comprometerse con varias clases que dediquen mucho tiempo de sus estudio como para tomarles el tiempo necesario que requieren cada clase por separado entre examenes y proyectos.

-Una de las formas del como estudiar cada clase, segun Meharan, es la del multiplicar cada credito de la clase por tres, el resultado seria la cantidad de horas que se deberian de estudiar a la semana, por promedio. pero si uno tiene a la semana una clase que se vea dos veces a la semana y dure 45 min cada clase, la mejor forma de estudiar es una hora antes de la clase y una hora despues, aproximadamente, si estas comenzando a estudiar y tienes un promedio de 4 a 5 clases por semana. pero si se quiere aprender, mejorar y avanzar de una forma academica ejemplar, uno deberia de estudiar 8 horas al dia, si se trabaja, 5 horas al dia, dependiendo de la situacion economica del estudiante. para una persona adulta con un trabajo tiempo completo, la mejora forma es la que se adapte a su diciplina en el ambito academico pero lo recomendable, luego del organizar un horario acorde al tiempo de salida del trabajo, el posible trafico y la clase o clases, 4 horas...ejemplo, una persona trabaja de 9am hasta las 5pm, sale del trabajo y llega a la universida o tecnico a las 6pm, llega a las clases hasta las 8pm, luego cena y a las 9pm comienza a estudiar hasta las 12am, donde tiene 7 horas para dormir.

-Claro, el grado de dificultad de la clase varia y hay clases faciles que solo consumen tiempo, estas clases no deberian de ser estudiadas si en la carrera profesional de la persona no van a ser utiles, pero algunas universidades o tecnicos requieren clases genericas para complementarle al estudiante, un grado mas de profecionalismo. con lo que discuten algunos estudiantes dada la dualidad del que quiere especialisarce en un area tecnica del manejo de redes y tengan que ver una clases obligatorias de la compocision del ingles o clases extras requeridas por el plantel academico.

41.00 min

-Meharan habla de los bichos o "bugs" que aparecen en los programas, los "bugs" o bichos son errores en los programas, estos errores tienen varias manifestaciones, unas mentales otras de terminologia, los errores mentales son aquellos que no dan el resultado esperado, los errores en la terminologia se dividen entre varios aspectos, el primero el de escribir mal una variable, metodo u otro tipo de palabras en el codigo que no sea reconocida por el programa. las variables son el espacio en la memoria determinado que puede almacenar informacion y tiene su identificacion determinada. los metodos son los que calculan la informacion y hay varios tipos de metodos, entre los cuales esta el Mutador y el Acesador. el Mutador genera un resultado y da su repuesta, el Accesador genera una operacion...(veremos mas adelante esto). estos errores, menos los mentales hacen que el Compiler deje de funcionar parando el analisis del programa y reportando el error. para entender el como funciona un compiler uno tiene que ver clases mucho mas avanzadas, grado de maestria, donde aprenderan a hacer compilers. por ahora lo basico.

45.00 min

-Meharan explica de donde viene la palabra Robot, ya que en la proxima clase se vera el programa llamado "Karel", titulo que se le atribuye al programador Rich quien dedico el nombre de su programa a quien se le atribuye la palabra Robot, el sennor Karel Capek. Karel Capek creo una obra de teatro llamada R. U. R. enfocada en loss robots.

-"Karel" es un programa que ensenna a los estudiantes a utilizar los metodos principales de la programacion, la logica de tal y su metodologia prematura.