TALLER DE INTRODUCCIÓN A LA PROGRAMACIÓN Ezequiel Aranda Sun Campus Ambassador
Disclaimer Even though Ezequiel Aranda is a full-time employee of Sun  Microsystems, the contents here are created as his own personal endeavor and thus does not reflect any official  stance of Sun Microsystems.
Sun Microsystems is not responsible for any inaccuracies in  the contents.
This slides are Licensed under a Creative Commons  Attribution – Noncommercial – Share Alike 3.0  http://creativecommons.org/licenses/by-nc-sa/3.0/
Agenda Parte 1: ¿Qué es una computadora? Parte 2: Java Parte 3: Herramientas para enseñar Java
PARTE 1 ¿Qué es una computadora?
Todo esto no es tan nuevo... En el siglo VIII, el matemático e ingeniero Muhammad ibn Musa al-Khwarizmi, inventó el algoritmo. 1642 – Blaise Pascal inventa la “Pascalina” ( ninguna relación con la “Pastalinda” ).
Todo esto no es tan nuevo... (II) 1801 – El francés Joseph Marie Jacquard, utilizó un mecanismo de tarjetas perforadas para controlar el dibujo formado por los hilos de las telas confeccionadas por una máquina 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 lógico inglés George Boole. 1919 – El primer circuito multivibrador o biestable (en léxico electrónico flip-flop) fue desarrollado por los inventores americanos W.H. Eccles y F.W. Jordan 1924 - Walther Bothe  construyó  una  puerta   lógica  AND 1936 – Alan Turing describe la  máquina  de Turing
Todo esto no es tan nuevo... (IV) 2004 – Mark Zuckerberg funda Facebook, y la mayoría de las personas de esta generación descubren el resultado de cientos de años de investigación científica.
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 electrónica, la mecánica, los materiales semiconductores, la lógica, el álgebra y la programación.
Volviendo a la pregunta original: ¿Qué es una computadora? Una computadora es una máquina de proposito general que recibe y procesa datos para convertirlos en información útil Esta formada por numerosos componentes que, en combinación pueden ejecutar con exactitud y rapidez una gran variedad de secuencias o rutinas precisamente determinadas.
Volviendo a la pregunta original: ¿Qué es una computadora? (II) La computadora, además de la rutina o programa informático, necesita de datos específicos  ("Input")  que deben ser suministrados, y que son requeridos al momento de la ejecución,  para proporcionar el producto final del procesamiento de datos, que recibe el nombre de  "output" .
Volviendo a la pregunta original: ¿Qué es una computadora? (III) La información puede ser entonces utilizada, reinterpretada, copiada, transferida, o retransmitida a otra(s) persona(s), computadora(s) o componente(s) electrónico(s) local o remotamente usando diferentes sistemas de telecomunicación, pudiendo ser grabada, salvada o almacenada en algún tipo de dispositivo o unidad de almacenamiento.
Entoces, ¿Cómo funciona? Arquitectura de von Neumann. Unidad aritmético lógica (ALU) Unidad de control  Memoria central Dispositivos de entrada y salida (E/S)
Entendido. Ahora a darle ordenes: Mmmm... FAIL. Pensándolo bien: ¿Cómo hago para decirle a cada componente que hacer y que la combinación de esas ordenes de lugar a la función que yo quiero realizar?
¿En que idioma habla una computadora? Habla en lenguaje de máquina. Son secuencias de unos y ceros que representan instrucciones. Y cada máquina programable tiene su propio lenguaje de máquina (aunque suelen ser similares).
¿O sea que un programador escribe secuencias de unos y ceros durante 8 horas diarias? Aunque eso haría más sencillo responder a muchas incógnitas sobre los programadores, no. Existen lo que se conocen como “lenguajes de programación”, que básicamente son instrucciones de alto nivel que luego son traducidas a código de máquina.
Lenguaje de programación Existen dos tipos de lenguaje de programación: de bajo nivel. de alto nivel. El “nivel” hace referencia al nivel de abstracción respecto del lenguaje de máquina.
Lenguaje de alto nivel Los lenguajes de programación de alto nivel se caracterizan por expresar los algoritmos de una manera adecuada a la capacidad cognitiva humana, en lugar de a la capacidad ejecutora de las máquinas. Ada Basic C++ COBOL Fortran Java Python Perl Pascal PHP PL/SQL
Genial, ya tengo la definición de lenguaje. Pero aún no tengo ni idea de como escribir un programa Los lenguajes de programación, 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 “método” con el que resolvemos el problema, es lo que se llama  “algoritmo” .
Algoritmo Un algoritmo no es más que una secuencia de pasos que, seguidos uno a uno, me permiten resolver un problema.  Por ejemplo, para ver una película: 1. Elijo una película de las de mi colección. 2. Compruebo SI TV y vídeo están conectadas a la red (y procedo). 3. SI la TV está apagada, la enciendo, SI NO, pues no. Y lo mismo con la vídeo. 4. Abro el estuche de la película. 5. Saco la película de su estuche.
Algoritmo (II) 6.  Introduzco  la  película  en la  vídeo.   Dejo  el  estuche  sobre la vídeo. 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 vídeo). 9. Me pongo  cómodo. 10. Pulso PLAY en el control de la vídeo. Dos detalles importantes: 1. La descripción de cada paso no me lleva a ambigüedades: los pasos son absolutamente explícitos y no inducen a error. 2. El número de pasos es finito.
Ejercicio 1 Intentar escribir una sucesión de pasos para alguna tarea cotidiana.
Elementos básicos para describir algoritmos Marcadores de principio fin. Variables: espacios de memoria donde almacenar valores que pueden variar (de ahí su nombre) durante la ejecución del programa.  Tienen un tipo y un valor . Asignaciones: I <- 3 Estructuras de control de flujo.
Estructuras de control de flujo Su objetivo es ir señalando el orden en que tienen que sucederse los pasos de un algoritmo.  Pueden ser  1. Secuenciales 2. Selectivas 3. Repetitivas
Secuencias Una estructura de control secuencial, en realidad, no es más que escribir un paso del algoritmo detrás 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
Selección Son los conocidos &quot;si... entonces&quot;. Se usan de la siguiente manera: yo quiero evaluar una condición, 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
Bucles, estructuras repetitivas En este tipo de estructura, el cuerpo del buclese repite MIENTRAS se cumple una determinada condición, que especificamos entre paréntesis. Su estructura, genéricamente, es esta: mientras(condición) hacer acción 1 ........ acción N fin mientras
Bucles, estructuras repetitivas (II) Una forma diferente de escribir una estructura “mientras”, que es más conveniente y resumida en ciertas ocasiones es el “for” o “desde”. inicio  desde Contador<-300.000.000 hasta Contador=1 , decrementar, hacer mostrar por pantalla 'Prometo ser bueno O:-)' fin desde fin
Ejercicio 2 Realizar un algoritmo para calcular la suma de los números del 1 al 10 .
Genial, ya tengo mi primer programa, ¿Y ahora? Una vez que tenemos un programa escrito en pseudocódigo (nombre que recibe esa forma en la que veníamos escribiendo los algoritmos en las slides anteriores), el primer paso es traducirlo a algún lenguaje de programación (más adelante podremos saltarnos este paso). Por suerte, esta traducción es, en general, bastante directa.
Genial, ya tengo mi primer programa, ¿Y ahora? (II) A continuación tendremos que convertir el programa que acabamos de escribir en algo que pueda comprender la máquina. Este proceso se conoce con el nombre de compilación, y es automático
¿Eso es todo amigos? En general, si. Salvando un pequeño detalle: El ejecutable generado solo funcionará en la plataforma (combinación de hardware y sistema operativo) para la que fue compilado.
¿Y qué es eso del sistema operativo? Para facilitar aún más la comunicación entre el humano y la máquina, existen los sistemas operativos. Un sistema operativo es una pieza de software que simplifica el manejo de la computadora, desempeñando una serie de funciones básicas esenciales para la gestión del equipo. Windows, Linux, Symbian, Solaris, Mac OS, FreeBSD y Android, son  algunos  ejemplos de sistemas operativos.
¿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 máquinas 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 programación orientado a objetos desarrollado a principios de los años 90. El lenguaje en sí mismo toma mucha de su sintaxis de C y C++, pero tiene un modelo de objetos más 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 administración de memoria automático.
Un poco de historia Fue realizado por un equipo de 13 personas, dirigidas por James Gosling. Los objetivos de Gosling eran implementar una máquina virtual y un lenguaje con una estructura y sintaxis similar a C++.  Java se creó originalmente como una herramienta de programación para un proyecto set- top -box conocido como *7.
Un poco de historia (II) En un principio, el sistema *7 no encontró un lugar en el mercado. A principios de los noventa, y sin un mercado para su herramienta, Gosling y su equipo se reunieron y notaron que “la nueva y popular Internet” tenia exactamente el tipo de configuración de red que ellos habían visionado para la industria de la TV por cable. Con esto en mente Gosling y su equipo crearon el navegador WebRunner y realizaron un demo que mostraba una molécula animada en una reunión de profesionales de la industria del entretenimiento e Internet. Todos sabemos como termina esta historia….
¿Porqué Java? El lenguaje se denominó inicialmente  “Oak” . Luego pasó a denominarse  “Green”  tras descubrir que Oak era ya una marca comercial registrada. El término  “JAVA”  fue acuñado en una cafetería frecuentada por algunos de los miembros del equipo.  No está claro si es un acrónimo o no, algunas hipotesis indican que podría tratarse de las iniciales de sus creadores:  J ames Gosling,  A rthur  V an Hoff, y  A ndy Bechtolsheim. Otras abogan por “ J ust  A nother  V ague  A cronym”.  La hipótesis que más fuerza tiene es la que Java debe su nombre a un tipo de café disponible en la cafetería.
.java, .class, JVM??? En Java el código fuente se escribe en un archivo de texto plano con extensión  .java . Luego, el código es compilado a archivos  .class . Un archivo .class no contiene código nativo a un tipo de procesador, en cambio contiene  bytecodes . Finalmente, la aplicación es interpretada por la maquina virtual de Java, transformando los bytecodes en código nativo en tiempo de ejecución.
Bytecode El bytecode es lenguaje nativo de cualquier implementación 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 ( A pplication  P rogramming  I nterface ) La API de Java es una vasta colección de componentes de software que proveen un conjunto de funciones útiles.
Java en detalle Inicialización 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 través 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 también provee un amplio conjunto de operaciones para manipular las instancias de esta clase.
Operadores: precedencia y funcionalidad
Operadores: precedencia y funcionalidad (II)
Ejemplo con operadores arimeticos int i=2+3;  // i vale 5 i=i+1;  //i vale 6 i=6*2;  //i vale 12 i=2+5*2%8;  //i vale4
Ejemplo con operadores posfix y unarios int i=5;  // i vale 5 System.out.println(i);  //Imprime:5 System.out.println(++i);  //Imprime:6 System.out.println(i++);  //Imprime:6 System.out.println(i);  //Imprime:7
Sentencias de control:  if if(expr){ .... } if(expr) sentencia; if(expr){ .... } else { .... }
Sentencias de control:  switch Switch (num){ case num1:...break; case num2:...break; default:...break; }
Sentencias de control:  while y do-while while (expr){ .... } do { .... }while(expr);
Sentencias de control:  for for (exprInic; condCorte; pasoSig){ .... } for (int i=0; i<10; i++) { System.out.println(i); } //Imprime los numeros del 0 al 9
Estructura de un programa Java La programación orientada a objetos se basa en que cada programa es  una simulación de un mundo real o virtual . Cada uno de estos mundos esta compuesto de  objetos . Los objetos se comunican a través de  mensajes Por lo tanto, un programa orientado a objetos no es mas que  una configuración de un conjunto de objetos y los mensajes que se envían entre ellos . El  “molde”  que guarda la descripción de todos los objetos de un mismo tipo e lo que conocemos como  clase . A su vez, las clases con propósitos similares pueden agruparse en  paquetes . La ejecución de un programa comienza en el método  “main”  de  una clase.
Ejemplo de paquete
Reglas para la creación de clases y paquetes Las clases Java se implementan en archivos separados. Cada clase se debe encontrar dentro de un paquete. El nombre del archivo de la implementación de clase debe ser igual al nombre de la clase. La estructura de paquete debe corresponderse a la estructura de directorio. Ej: edu.sun.Ejemplo seria mapeado al archivo .../edu/sun/Ejemplo.java
Estructura de una clase
Ejemplos de paquetes Java java.lang Incluye las clases del lenguaje Java propiamente dicho: Object, Thread, Exception, System, Integer, Float, Math, String, etc. java.util Miscelánea de clases útiles para muchas cosas en programación.  Incluyen, Date (fecha), Dictionary (diccionario), Random (números aleatorios) y Stack (pila FIFO ). java.io El paquete de entrada/salida contiene las clases de acceso a archivos: FileInputStream y FileOutputStream, etc.
¿Y qué necesito para programar en Java? El kit de desarrollo Java – obligatorio
Un ambiente de desarrollo - recomendado
Java Development Kit (JDK) El JDK consiste de: El Java development tools, incluyendo el compilador, debugger y el intérprete Java. Las Java class libraries organizadas como una colección de paquetes. Un número importante de programas de demostración. Varias herramientas de soporte y componentes, incluyendo el código fuente de las clases en la biblioteca. URL :  java.sun.com/javase/downloads
Ambientes de desarrollo Java (IDEs) Un IDE (del inglés  I ntegrated  D evelopment  E nviroment) es un  ambiente   que  integra   un conjunto de herramientas (editor con prestaciones especiales, compilador, administración de proyectos, debugger,etc) que permiten realizar todo el proceso de  desarrollo   dentro del mismo. Si bien es posible escribir nuestros programas java en cualquier editor de texto y compilarlos desde una consola con javac, es mas cómodo y recomendable trabajar desde un IDE.
¿Y qué tiene un IDE que no tenga mi bloc de notas? En general, todos los editores de los IDEs mas modernos proveen: Un editor  language aware : indentación de código, resaltador de sintáxis, matching de variables y llaves, etc. Parsing en tiempo de ejecución : corrección de errores, remarcado de ocurrencias, tips, arreglos sencillos, etc. Generación automática de código y funciones para completar código mientras escribimos. Administración de proyectos Debugger Múltiples opciones de configuración
Algunos de los IDEs mas utilizados
El  IDE NetBeans  es un ambiente de desarrollo de código abierto creado a partir de la plataforma homónima 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  módulos .
Proceso de instalación de NetBeans Bajar e instalar la última versión del JDK  (requerido) . Ingresar a  http://download.netbeans.org  y bajar la versión correspondiente a nuestro sistema operativo. Ejecutar el instalador  ( .sh,   .exe , o  .dmg  dependiendo). Seguir el proceso de instalación y ejecutar la aplicación  netbeans  al finalizar el mismo.
Ejemplo de aplicación en NetBeans
Ejercicio 3 Repetir el ejercicio 2, esta vez en Java.
Parte 3: herrmientas para enseñar Java
GreenFoot GreenFoot es un editor especialmente diseñado 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 interacción y visualización de objetos son los componentes claves. Está dirigido a programadores de nivel secundario (13 años en adelante).
Demo Greenfoot www.greenfoot.org
Alice  Alice es un ambiente de programación que facilita la creación de animaciones para “contar historias”. Esta diseñado para ser el primer contacto de los estudiantes con la programación orientada a objetos. Permite a los estudiantes aprender programación mientras crean películas animadas y vídeo juegos sencillos.
Demo Alice www.alice.org
BlueJ El ambiente de desarrollo BlueJ fue desarrollado como parte de un proyecto de investigación académico para enseñar programación orientada a objetos a principiantes. El objetivo de BlueJ es proveer un ambiente sencillo de utilizar para la enseñanza del lenguaje Java a estudiantes. Se ha puesto especial enfasis en las tecnicas de visualizacion e interacción para crear un ambiente interactivo que fomente la experimentación y exploración.
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 interés por las tecnologías libres. Ya existe al menos un OSUM por cada universidad en donde hay un Campus Ambassador, y nuevos grupos se están formando día a día. Dentro de la red de OSUMs encontrarás respuestas a tus interrogantes técnicas y filosóficas sobre tecnologías libres, participarás de reuniones y proyectos, etc. Unirte es muy sencillo,  http://osum.sun.com
SAI - Iniciativa Academica de Sun Entrenamiento  GRATIS  vía web de  Java TM ,  Solaris TM  y más. Página de la iniciativa:  http://ar.sun.com/training/sai/index.jsp Cursos en:  http://sailearningconnection.skillport.com/ Program name:  SAI-Argentina Program ID:  tbwg1fq8

Introducción a la Programación con Java

  • 1.
    TALLER DE INTRODUCCIÓNA LA PROGRAMACIÓN Ezequiel Aranda Sun Campus Ambassador
  • 2.
    Disclaimer Even thoughEzequiel Aranda is a full-time employee of Sun Microsystems, the contents here are created as his own personal endeavor and thus does not reflect any official stance of Sun Microsystems.
  • 3.
    Sun Microsystems isnot responsible for any inaccuracies in the contents.
  • 4.
    This slides areLicensed under a Creative Commons Attribution – Noncommercial – Share Alike 3.0 http://creativecommons.org/licenses/by-nc-sa/3.0/
  • 5.
    Agenda Parte 1:¿Qué es una computadora? Parte 2: Java Parte 3: Herramientas para enseñar Java
  • 6.
    PARTE 1 ¿Quées una computadora?
  • 7.
    Todo esto noes tan nuevo... En el siglo VIII, el matemático e ingeniero Muhammad ibn Musa al-Khwarizmi, inventó el algoritmo. 1642 – Blaise Pascal inventa la “Pascalina” ( ninguna relación con la “Pastalinda” ).
  • 8.
    Todo esto noes tan nuevo... (II) 1801 – El francés Joseph Marie Jacquard, utilizó un mecanismo de tarjetas perforadas para controlar el dibujo formado por los hilos de las telas confeccionadas por una máquina 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 .
  • 9.
    Todo esto noes tan nuevo... (III) 1854 – El desarrollo del Álgebra de Boole fue publicado por el lógico inglés George Boole. 1919 – El primer circuito multivibrador o biestable (en léxico electrónico flip-flop) fue desarrollado por los inventores americanos W.H. Eccles y F.W. Jordan 1924 - Walther Bothe construyó una puerta lógica AND 1936 – Alan Turing describe la máquina de Turing
  • 10.
    Todo esto noes tan nuevo... (IV) 2004 – Mark Zuckerberg funda Facebook, y la mayoría de las personas de esta generación descubren el resultado de cientos de años de investigación científica.
  • 11.
    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 electrónica, la mecánica, los materiales semiconductores, la lógica, el álgebra y la programación.
  • 12.
    Volviendo a lapregunta original: ¿Qué es una computadora? Una computadora es una máquina de proposito general que recibe y procesa datos para convertirlos en información útil Esta formada por numerosos componentes que, en combinación pueden ejecutar con exactitud y rapidez una gran variedad de secuencias o rutinas precisamente determinadas.
  • 13.
    Volviendo a lapregunta original: ¿Qué es una computadora? (II) La computadora, además de la rutina o programa informático, necesita de datos específicos (&quot;Input&quot;) que deben ser suministrados, y que son requeridos al momento de la ejecución, para proporcionar el producto final del procesamiento de datos, que recibe el nombre de &quot;output&quot; .
  • 14.
    Volviendo a lapregunta original: ¿Qué es una computadora? (III) La información puede ser entonces utilizada, reinterpretada, copiada, transferida, o retransmitida a otra(s) persona(s), computadora(s) o componente(s) electrónico(s) local o remotamente usando diferentes sistemas de telecomunicación, pudiendo ser grabada, salvada o almacenada en algún tipo de dispositivo o unidad de almacenamiento.
  • 15.
    Entoces, ¿Cómo funciona?Arquitectura de von Neumann. Unidad aritmético lógica (ALU) Unidad de control Memoria central Dispositivos de entrada y salida (E/S)
  • 16.
    Entendido. Ahora adarle ordenes: Mmmm... FAIL. Pensándolo bien: ¿Cómo hago para decirle a cada componente que hacer y que la combinación de esas ordenes de lugar a la función que yo quiero realizar?
  • 17.
    ¿En que idiomahabla una computadora? Habla en lenguaje de máquina. Son secuencias de unos y ceros que representan instrucciones. Y cada máquina programable tiene su propio lenguaje de máquina (aunque suelen ser similares).
  • 18.
    ¿O sea queun programador escribe secuencias de unos y ceros durante 8 horas diarias? Aunque eso haría más sencillo responder a muchas incógnitas sobre los programadores, no. Existen lo que se conocen como “lenguajes de programación”, que básicamente son instrucciones de alto nivel que luego son traducidas a código de máquina.
  • 19.
    Lenguaje de programaciónExisten dos tipos de lenguaje de programación: de bajo nivel. de alto nivel. El “nivel” hace referencia al nivel de abstracción respecto del lenguaje de máquina.
  • 20.
    Lenguaje de altonivel Los lenguajes de programación de alto nivel se caracterizan por expresar los algoritmos de una manera adecuada a la capacidad cognitiva humana, en lugar de a la capacidad ejecutora de las máquinas. Ada Basic C++ COBOL Fortran Java Python Perl Pascal PHP PL/SQL
  • 21.
    Genial, ya tengola definición de lenguaje. Pero aún no tengo ni idea de como escribir un programa Los lenguajes de programación, cuentan todos en su haber con un juego de &quot;instrucciones&quot;. 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 “método” con el que resolvemos el problema, es lo que se llama “algoritmo” .
  • 22.
    Algoritmo Un algoritmono es más que una secuencia de pasos que, seguidos uno a uno, me permiten resolver un problema. Por ejemplo, para ver una película: 1. Elijo una película de las de mi colección. 2. Compruebo SI TV y vídeo están conectadas a la red (y procedo). 3. SI la TV está apagada, la enciendo, SI NO, pues no. Y lo mismo con la vídeo. 4. Abro el estuche de la película. 5. Saco la película de su estuche.
  • 23.
    Algoritmo (II) 6. Introduzco la película en la vídeo. Dejo el estuche sobre la vídeo. 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 vídeo). 9. Me pongo cómodo. 10. Pulso PLAY en el control de la vídeo. Dos detalles importantes: 1. La descripción de cada paso no me lleva a ambigüedades: los pasos son absolutamente explícitos y no inducen a error. 2. El número de pasos es finito.
  • 24.
    Ejercicio 1 Intentarescribir una sucesión de pasos para alguna tarea cotidiana.
  • 25.
    Elementos básicos paradescribir algoritmos Marcadores de principio fin. Variables: espacios de memoria donde almacenar valores que pueden variar (de ahí su nombre) durante la ejecución del programa. Tienen un tipo y un valor . Asignaciones: I <- 3 Estructuras de control de flujo.
  • 26.
    Estructuras de controlde flujo Su objetivo es ir señalando el orden en que tienen que sucederse los pasos de un algoritmo. Pueden ser 1. Secuenciales 2. Selectivas 3. Repetitivas
  • 27.
    Secuencias Una estructurade control secuencial, en realidad, no es más que escribir un paso del algoritmo detrás 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
  • 28.
    Selección Son losconocidos &quot;si... entonces&quot;. Se usan de la siguiente manera: yo quiero evaluar una condición, 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
  • 29.
    Bucles, estructuras repetitivasEn este tipo de estructura, el cuerpo del buclese repite MIENTRAS se cumple una determinada condición, que especificamos entre paréntesis. Su estructura, genéricamente, es esta: mientras(condición) hacer acción 1 ........ acción N fin mientras
  • 30.
    Bucles, estructuras repetitivas(II) Una forma diferente de escribir una estructura “mientras”, que es más conveniente y resumida en ciertas ocasiones es el “for” o “desde”. inicio desde Contador<-300.000.000 hasta Contador=1 , decrementar, hacer mostrar por pantalla 'Prometo ser bueno O:-)' fin desde fin
  • 31.
    Ejercicio 2 Realizarun algoritmo para calcular la suma de los números del 1 al 10 .
  • 32.
    Genial, ya tengomi primer programa, ¿Y ahora? Una vez que tenemos un programa escrito en pseudocódigo (nombre que recibe esa forma en la que veníamos escribiendo los algoritmos en las slides anteriores), el primer paso es traducirlo a algún lenguaje de programación (más adelante podremos saltarnos este paso). Por suerte, esta traducción es, en general, bastante directa.
  • 33.
    Genial, ya tengomi primer programa, ¿Y ahora? (II) A continuación tendremos que convertir el programa que acabamos de escribir en algo que pueda comprender la máquina. Este proceso se conoce con el nombre de compilación, y es automático
  • 34.
    ¿Eso es todoamigos? En general, si. Salvando un pequeño detalle: El ejecutable generado solo funcionará en la plataforma (combinación de hardware y sistema operativo) para la que fue compilado.
  • 35.
    ¿Y qué eseso del sistema operativo? Para facilitar aún más la comunicación entre el humano y la máquina, existen los sistemas operativos. Un sistema operativo es una pieza de software que simplifica el manejo de la computadora, desempeñando una serie de funciones básicas esenciales para la gestión del equipo. Windows, Linux, Symbian, Solaris, Mac OS, FreeBSD y Android, son algunos ejemplos de sistemas operativos.
  • 36.
    ¿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 máquinas 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.
  • 37.
  • 38.
    ¿Qué es Java?Java es un lenguaje de programación orientado a objetos desarrollado a principios de los años 90. El lenguaje en sí mismo toma mucha de su sintaxis de C y C++, pero tiene un modelo de objetos más 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 administración de memoria automático.
  • 39.
    Un poco dehistoria Fue realizado por un equipo de 13 personas, dirigidas por James Gosling. Los objetivos de Gosling eran implementar una máquina virtual y un lenguaje con una estructura y sintaxis similar a C++. Java se creó originalmente como una herramienta de programación para un proyecto set- top -box conocido como *7.
  • 40.
    Un poco dehistoria (II) En un principio, el sistema *7 no encontró un lugar en el mercado. A principios de los noventa, y sin un mercado para su herramienta, Gosling y su equipo se reunieron y notaron que “la nueva y popular Internet” tenia exactamente el tipo de configuración de red que ellos habían visionado para la industria de la TV por cable. Con esto en mente Gosling y su equipo crearon el navegador WebRunner y realizaron un demo que mostraba una molécula animada en una reunión de profesionales de la industria del entretenimiento e Internet. Todos sabemos como termina esta historia….
  • 41.
    ¿Porqué Java? Ellenguaje se denominó inicialmente “Oak” . Luego pasó a denominarse “Green” tras descubrir que Oak era ya una marca comercial registrada. El término “JAVA” fue acuñado en una cafetería frecuentada por algunos de los miembros del equipo. No está claro si es un acrónimo o no, algunas hipotesis indican que podría tratarse de las iniciales de sus creadores: J ames Gosling, A rthur V an Hoff, y A ndy Bechtolsheim. Otras abogan por “ J ust A nother V ague A cronym”. La hipótesis que más fuerza tiene es la que Java debe su nombre a un tipo de café disponible en la cafetería.
  • 42.
    .java, .class, JVM???En Java el código fuente se escribe en un archivo de texto plano con extensión .java . Luego, el código es compilado a archivos .class . Un archivo .class no contiene código nativo a un tipo de procesador, en cambio contiene bytecodes . Finalmente, la aplicación es interpretada por la maquina virtual de Java, transformando los bytecodes en código nativo en tiempo de ejecución.
  • 43.
    Bytecode El bytecodees lenguaje nativo de cualquier implementación de la maquina virtual de Java. De esta forma se logra que un programa Java corra en cualquier plataforma que disponga de una JVM.
  • 44.
    La plataforma JavaUna 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 ( A pplication P rogramming I nterface ) La API de Java es una vasta colección de componentes de software que proveen un conjunto de funciones útiles.
  • 45.
    Java en detalleInicialización de Variables El lenguaje Java es fuertemente tipado, lo que significa que todas las variables deben ser declaradas antes de utilizarse. int unaVariable = 1;
  • 46.
    Java en detalleTipos Primitivos
  • 47.
    Java en detalleTipos Primitivos (II)
  • 48.
    La clase StringJava provee soporte especial para las cadenas de caracteres a través 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 también provee un amplio conjunto de operaciones para manipular las instancias de esta clase.
  • 49.
  • 50.
    Operadores: precedencia yfuncionalidad (II)
  • 51.
    Ejemplo con operadoresarimeticos int i=2+3; // i vale 5 i=i+1; //i vale 6 i=6*2; //i vale 12 i=2+5*2%8; //i vale4
  • 52.
    Ejemplo con operadoresposfix y unarios int i=5; // i vale 5 System.out.println(i); //Imprime:5 System.out.println(++i); //Imprime:6 System.out.println(i++); //Imprime:6 System.out.println(i); //Imprime:7
  • 53.
    Sentencias de control: if if(expr){ .... } if(expr) sentencia; if(expr){ .... } else { .... }
  • 54.
    Sentencias de control: switch Switch (num){ case num1:...break; case num2:...break; default:...break; }
  • 55.
    Sentencias de control: while y do-while while (expr){ .... } do { .... }while(expr);
  • 56.
    Sentencias de control: for for (exprInic; condCorte; pasoSig){ .... } for (int i=0; i<10; i++) { System.out.println(i); } //Imprime los numeros del 0 al 9
  • 57.
    Estructura de unprograma Java La programación orientada a objetos se basa en que cada programa es una simulación de un mundo real o virtual . Cada uno de estos mundos esta compuesto de objetos . Los objetos se comunican a través de mensajes Por lo tanto, un programa orientado a objetos no es mas que una configuración de un conjunto de objetos y los mensajes que se envían entre ellos . El “molde” que guarda la descripción de todos los objetos de un mismo tipo e lo que conocemos como clase . A su vez, las clases con propósitos similares pueden agruparse en paquetes . La ejecución de un programa comienza en el método “main” de una clase.
  • 58.
  • 59.
    Reglas para lacreación de clases y paquetes Las clases Java se implementan en archivos separados. Cada clase se debe encontrar dentro de un paquete. El nombre del archivo de la implementación de clase debe ser igual al nombre de la clase. La estructura de paquete debe corresponderse a la estructura de directorio. Ej: edu.sun.Ejemplo seria mapeado al archivo .../edu/sun/Ejemplo.java
  • 60.
  • 61.
    Ejemplos de paquetesJava java.lang Incluye las clases del lenguaje Java propiamente dicho: Object, Thread, Exception, System, Integer, Float, Math, String, etc. java.util Miscelánea de clases útiles para muchas cosas en programación. Incluyen, Date (fecha), Dictionary (diccionario), Random (números aleatorios) y Stack (pila FIFO ). java.io El paquete de entrada/salida contiene las clases de acceso a archivos: FileInputStream y FileOutputStream, etc.
  • 62.
    ¿Y qué necesitopara programar en Java? El kit de desarrollo Java – obligatorio
  • 63.
    Un ambiente dedesarrollo - recomendado
  • 64.
    Java Development Kit(JDK) El JDK consiste de: El Java development tools, incluyendo el compilador, debugger y el intérprete Java. Las Java class libraries organizadas como una colección de paquetes. Un número importante de programas de demostración. Varias herramientas de soporte y componentes, incluyendo el código fuente de las clases en la biblioteca. URL : java.sun.com/javase/downloads
  • 65.
    Ambientes de desarrolloJava (IDEs) Un IDE (del inglés I ntegrated D evelopment E nviroment) es un ambiente que integra un conjunto de herramientas (editor con prestaciones especiales, compilador, administración de proyectos, debugger,etc) que permiten realizar todo el proceso de desarrollo dentro del mismo. Si bien es posible escribir nuestros programas java en cualquier editor de texto y compilarlos desde una consola con javac, es mas cómodo y recomendable trabajar desde un IDE.
  • 66.
    ¿Y qué tieneun IDE que no tenga mi bloc de notas? En general, todos los editores de los IDEs mas modernos proveen: Un editor language aware : indentación de código, resaltador de sintáxis, matching de variables y llaves, etc. Parsing en tiempo de ejecución : corrección de errores, remarcado de ocurrencias, tips, arreglos sencillos, etc. Generación automática de código y funciones para completar código mientras escribimos. Administración de proyectos Debugger Múltiples opciones de configuración
  • 67.
    Algunos de losIDEs mas utilizados
  • 68.
    El IDENetBeans es un ambiente de desarrollo de código abierto creado a partir de la plataforma homónima 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 módulos .
  • 69.
    Proceso de instalaciónde NetBeans Bajar e instalar la última versión del JDK (requerido) . Ingresar a http://download.netbeans.org y bajar la versión correspondiente a nuestro sistema operativo. Ejecutar el instalador ( .sh, .exe , o .dmg dependiendo). Seguir el proceso de instalación y ejecutar la aplicación netbeans al finalizar el mismo.
  • 70.
  • 71.
    Ejercicio 3 Repetirel ejercicio 2, esta vez en Java.
  • 72.
    Parte 3: herrmientaspara enseñar Java
  • 73.
    GreenFoot GreenFoot esun editor especialmente diseñado 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 interacción y visualización de objetos son los componentes claves. Está dirigido a programadores de nivel secundario (13 años en adelante).
  • 74.
  • 75.
    Alice Alicees un ambiente de programación que facilita la creación de animaciones para “contar historias”. Esta diseñado para ser el primer contacto de los estudiantes con la programación orientada a objetos. Permite a los estudiantes aprender programación mientras crean películas animadas y vídeo juegos sencillos.
  • 76.
  • 77.
    BlueJ El ambientede desarrollo BlueJ fue desarrollado como parte de un proyecto de investigación académico para enseñar programación orientada a objetos a principiantes. El objetivo de BlueJ es proveer un ambiente sencillo de utilizar para la enseñanza del lenguaje Java a estudiantes. Se ha puesto especial enfasis en las tecnicas de visualizacion e interacción para crear un ambiente interactivo que fomente la experimentación y exploración.
  • 78.
  • 79.
    Aprender Java enla web Sun's Java Tutorials http://java.sun.com/docs/books/tutorial/ Learning Connection http://learningconnection.sun.com Java Passion http://www.javapassion.com/
  • 80.
    Un OSUM esun grupo de personas que comparten su interés por las tecnologías libres. Ya existe al menos un OSUM por cada universidad en donde hay un Campus Ambassador, y nuevos grupos se están formando día a día. Dentro de la red de OSUMs encontrarás respuestas a tus interrogantes técnicas y filosóficas sobre tecnologías libres, participarás de reuniones y proyectos, etc. Unirte es muy sencillo, http://osum.sun.com
  • 81.
    SAI - IniciativaAcademica de Sun Entrenamiento GRATIS vía web de Java TM , Solaris TM y más. Página de la iniciativa: http://ar.sun.com/training/sai/index.jsp Cursos en: http://sailearningconnection.skillport.com/ Program name: SAI-Argentina Program ID: tbwg1fq8

Notas del editor

  • #77 In order to land high paying jobs, students need to find ways to differentiate themselves from other recent graduates. Through the Sun Academic Initiative, Sun offers free training that will help you fast-track your career. As an example, a recent article in CIO Magazine included the Sun Certified Programmer for Java 2 platform and the Sun Certified Systems Administrator for Solaris as two of the hot certifications that are able to demand higher wages. Refer to the hand-out with instructions for online registration and certification exams.