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
No comments:
Post a Comment