Professional Documents
Culture Documents
Agenda
Parte 1: Qu es una computadora? Parte 2: Java Parte 3: Herramientas para ensear Java
Todo esto no es tan nuevo... En el siglo VIII, el matemtico e ingeniero Muhammad ibn Musa al-Khwarizmi, invent el algoritmo. 1642 Blaise Pascal inventa la Pascalina (ninguna relacin con la Pastalinda).
Todo esto no es tan nuevo... (II) 1801 El francs Joseph Marie Jacquard, utiliz un mecanismo de tarjetas perforadas para controlar el dibujo formado por los hilos de las telas confeccionadas por una mquina de tejer. 1822 Charles Babbage complet su Artefacto de la diferencia. 1843 Lady Ada Augusta Lovelace sugiri la idea de que las tarjetas perforadas se adaptaran de manera que causaran que el motor de Babbage repitiera ciertas operaciones.
Todo esto no es tan nuevo... (III) 1854 El desarrollo del lgebra de Boole fue publicado por el lgico ingls George Boole. 1919 El primer circuito multivibrador o biestable (en lxico electrnico flip-flop) fue desarrollado por los inventores americanos W.H. Eccles y F.W. Jordan 1924 - Walther Bothe construy una puerta lgica AND 1936 Alan Turing describe la mquina de Turing
Todo esto no es tan nuevo... (IV) 2004 Mark Zuckerberg funda Facebook, y la mayora de las personas de esta generacin descubren el resultado de cientos de aos de investigacin cientfica.
Entonces, Quien invent la computadora? En realidad, la computadora no es un invento de una persona en particular. Es el resultado evolutivo de ideas y realizaciones de muchas personas relacionadas con reas tales como la electrnica, la mecnica, los materiales semiconductores, la lgica, el lgebra y la programacin.
Mmmm... FAIL. Pensndolo bien: Cmo hago para decirle a cada componente que hacer y que la combinacin de esas ordenes de lugar a la funcin que yo quiero realizar?
O sea que un programador escribe secuencias de unos y ceros durante 8 horas diarias?
Aunque eso hara ms sencillo responder a muchas incgnitas sobre los programadores, no. Existen lo que se conocen como lenguajes de programacin, que bsicamente son instrucciones de alto nivel que luego son traducidas a cdigo de mquina.
Lenguaje de programacin
Existen dos tipos de lenguaje de programacin:
de bajo nivel. de alto nivel.
Genial, ya tengo la definicin de lenguaje. Pero an no tengo ni idea de como escribir un programa Los lenguajes de programacin, cuentan todos en su haber con un juego de "instrucciones". Un programa es una secuencia de instrucciones pensada para resolver un problema. Si no sabemos resolver el problema, no podremos escribir el programa. A uno se le puede ocurrir una manera de resolverlo. A otra persona, otra. Este mtodo con el que resolvemos el problema, es lo que se llama algoritmo.
Algoritmo
Un algoritmo no es ms que una secuencia de pasos que, seguidos uno a uno, me permiten resolver un problema. Por ejemplo, para ver una pelcula:
1. Elijo una pelcula de las de mi coleccin. 2. Compruebo SI TV y vdeo estn conectadas a la red (y procedo). 3. SI la TV est apagada, la enciendo, SI NO, pues no. Y lo mismo con la vdeo. 4. Abro el estuche de la pelcula. 5. Saco la pelcula de su estuche.
Algoritmo (II)
6. Introduzco la pelcula en la vdeo. Dejo el estuche sobre la vdeo. 7. SI la TV no est en el canal adecuado, la cambio, SI NO, pues no. 8. Tomo los controles remotos (el del TV y el de la vdeo). 9. Me pongo cmodo. 10. Pulso PLAY en el control de la vdeo.
Ejercicio 1
Secuencias
Una estructura de control secuencial, en realidad, no es ms que escribir un paso del algoritmo detrs de otro, el que primero se haya escrito ser el que primero se ejecute.
inicio mostrar por pantalla 'dame el radio del circulo' leer del teclado la variable radio area <- 3.14159*radio mostrar por pantalla 'el area del circulo es:' mostrar por pantalla el contenido de la variable area fin
Seleccin
Son los conocidos "si... entonces". Se usan de la siguiente manera: yo quiero evaluar una condicin, y si se cumple, entonces realizar una serie de pasos.
inicio mostrar por pantalla 'introduce un numero' leer del teclado la variable numero SI numero >= 0 ENTONCES: raiz <- raiz_cuadrada(numero) mostrar por pantalla 'la raiz cuadrada es:' mostrar por pantalla raiz fin del SI fin
Ejercicio 2
Y Por qu no puedo hacer un programa que funcione en todas las plataformas? En el caso del hardware, la respuesta es sencilla y ya la vimos antes: las distintas mquinas no necesariamente hablan el mismo idioma. En el caso del sistema operativo, sucede que, dado que el sistema operativo realiza las operaciones de acceso al hardware, nuestro programa no necesitar rescribirlas, sino reutilizarlas (linkearlas). Pero cada sistema operativo realiza estas tareas en forma diferente.
Parte 2: Java
Qu es Java?
Java es un lenguaje de programacin orientado a objetos desarrollado a principios de los aos 90. El lenguaje en s mismo toma mucha de su sintaxis de C y C++, pero tiene un modelo de objetos ms simple y elimina herramientas de bajo nivel. Es independiente de la plataforma. Las primeras implementaciones de Java rezaban:write once, run anywhere. Posee un sistema de administracin de memoria automtico.
Un poco de historia
Java se cre originalmente como una herramienta de programacin para un proyecto set-top-box conocido como *7.
Fue realizado por un equipo de 13 personas, dirigidas por James Gosling. Los objetivos de Gosling eran implementar una mquina virtual y un lenguaje con una estructura y sintaxis similar a C++.
Porqu Java?
El lenguaje se denomin inicialmente Oak. Luego pas a denominarse Green tras descubrir que Oak era ya una marca comercial registrada. El trmino JAVA fue acuado en una cafetera frecuentada por algunos de los miembros del equipo. No est claro si es un acrnimo o no, algunas hipotesis indican que podra tratarse de las iniciales de sus creadores: James Gosling, Arthur Van Hoff, y Andy Bechtolsheim. Otras abogan por Just Another Vague Acronym. La hiptesis que ms fuerza tiene es la que Java debe su nombre a un tipo de caf disponible en la cafetera.
En Java el cdigo fuente se escribe en un archivo de texto plano con extensin .java. Luego, el cdigo es compilado a archivos .class. Un archivo .class no contiene cdigo nativo a un tipo de procesador, en cambio contiene bytecodes. Finalmente, la aplicacin es interpretada por la maquina virtual de Java, transformando los bytecodes en cdigo nativo en tiempo de ejecucin.
Bytecode
El bytecode es lenguaje nativo de cualquier implementacin de la maquina virtual de Java. De esta forma se logra que un programa Java corra en cualquier plataforma que disponga de una JVM.
La plataforma Java
Una plataforma es el ambiente de software o hardware en el que corre un programa. La plataforma Java consta de dos componentes La maquina virtual de Java La API de Java (Application Programming Interface)
La API de Java es una vasta coleccin de componentes de software que proveen un conjunto de funciones tiles.
Java en detalle
Inicializacin de Variables
El lenguaje Java es fuertemente tipado, lo que significa que todas las variables deben ser declaradas antes de utilizarse.
int unaVariable = 1;
Java en detalle
Tipos Primitivos
Java en detalle
Tipos Primitivos (II)
La clase String
Java provee soporte especial para las cadenas de caracteres a travs de la clase java.lang.String No es un tipo primitivo. Sin embargo, mediante sobrecarga de operadores pueden realizarse operaciones como:
String unString = Juan + + Perez;
Java tambin provee un amplio conjunto de operaciones para manipular las instancias de esta clase.
Sentencias de control: if
if(expr){ .... } if(expr) sentencia;
do { .... }while(expr);
Ejemplo de paquete
java.lang
Incluye las clases del lenguaje Java propiamente dicho: Object, Thread, Exception, System, Integer, Float, Math, String, etc.
java.util
Miscelnea de clases tiles para muchas cosas en programacin. Incluyen, Date (fecha), Dictionary (diccionario), Random (nmeros aleatorios) y Stack (pila FIFO).
URL: java.sun.com/javase/downloads
El IDE NetBeans es un ambiente de desarrollo de cdigo abierto creado a partir de la plataforma homnima Originalmente desarrollado por Sun Microsystems, actualmente mantenido por la comunidad NetBeans (aunque aun recibe soporte de Sun como producto). Es multiplataforma Licencias CDDL y GPL 2. Todas las funciones en NetBeans son provistas por mdulos.
Ejercicio 3
Repetir el ejercicio 2, esta vez en Java.
GreenFoot
GreenFoot es un editor especialmente diseado para programadores novatos. Si bien soporta el lenguaje Java en su totalidad, es especialmente til para programar ejercicios que tengan contenido visual. En GreenFoot la interaccin y visualizacin de objetos son los componentes claves. Est dirigido a programadores de nivel secundario (13 aos en adelante).
Demo Greenfoot
www.greenfoot.org
Alice
Alice es un ambiente de programacin que facilita la creacin de animaciones para contar historias. Esta diseado para ser el primer contacto de los estudiantes con la programacin orientada a objetos. Permite a los estudiantes aprender programacin mientras crean pelculas animadas y vdeo juegos sencillos.
Demo Alice
www.alice.org
BlueJ
El ambiente de desarrollo BlueJ fue desarrollado como parte de un proyecto de investigacin acadmico para ensear programacin orientada a objetos a principiantes. El objetivo de BlueJ es proveer un ambiente sencillo de utilizar para la enseanza del lenguaje Java a estudiantes. Se ha puesto especial enfasis en las tecnicas de visualizacion e interaccin para crear un ambiente interactivo que fomente la experimentacin y exploracin.
Demo BlueJ
www.bluej.org
Aprender Java en la web Sun's Java Tutorials http://java.sun.com/docs/books/tutorial/ Learning Connection http://learningconnection.sun.com Java Passion http://www.javapassion.com/
Un OSUM es un grupo de personas que comparten su inters por las tecnologas libres. Ya existe al menos un OSUM por cada universidad en donde hay un Campus Ambassador, y nuevos grupos se estn formando da a da. Dentro de la red de OSUMs encontrars respuestas a tus interrogantes tcnicas y filosficas sobre tecnologas libres, participars de reuniones y proyectos, etc. Unirte es muy sencillo, http://osum.sun.com
Preguntas?
MUCHAS GRACIAS!
Ezequiel Aranda Ezequiel.Aranda@sun.com blogs.sun.com/argentina_ambassador twitter.com/ambassadorsarg twitter.com/fleko
80