You are on page 1of 80

TALLER DE INTRODUCCIN A LA PROGRAMACIN

Ezequiel Aranda Sun Campus Ambassador

Agenda

Parte 1: Qu es una computadora? Parte 2: Java Parte 3: Herramientas para ensear Java

PARTE 1 Qu es una computadora?

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.

Volviendo a la pregunta original: Qu es una computadora?


Una computadora es una mquina de proposito general que recibe y procesa datos para convertirlos en informacin til Esta formada por numerosos componentes que, en combinacin 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, adems de la rutina o programa informtico, necesita de datos especficos ("Input") que deben ser suministrados, y que son requeridos al momento de la ejecucin, 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 informacin puede ser entonces utilizada, reinterpretada, copiada, transferida, o retransmitida a otra(s) persona(s), computadora(s) o componente(s) electrnico(s) local o remotamente usando diferentes sistemas de telecomunicacin, pudiendo ser grabada, salvada o almacenada en algn tipo de dispositivo o unidad de almacenamiento.

Entoces, Cmo funciona?


Arquitectura de von Neumann.
Unidad aritmtico lgica (ALU) Unidad de control Memoria central Dispositivos de entrada y salida (E/S)

Entendido. Ahora a darle ordenes:

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?

En que idioma habla una computadora?


Habla en lenguaje de mquina. Son secuencias de unos y ceros que representan instrucciones. Y cada mquina programable tiene su propio lenguaje de mquina (aunque suelen ser similares).

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.

El nivel hace referencia al nivel de abstraccin respecto del lenguaje de mquina.

Lenguaje de alto nivel


Los lenguajes de programacin 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 mquinas.
Ada Basic C++ COBOL Fortran Java Python Perl Pascal PHP PL/SQL

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.

Dos detalles importantes:


1. La descripcin de cada paso no me lleva a ambigedades: los pasos son absolutamente explcitos y no inducen a error. 2. El nmero de pasos es finito.

Ejercicio 1

Intentar escribir una sucesin de pasos para alguna tarea cotidiana.

Elementos bsicos para describir algoritmos


Marcadores de principio fin. Variables: espacios de memoria donde almacenar valores que pueden variar (de ah su nombre) durante la ejecucin 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 sealando 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 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

Bucles, estructuras repetitivas


En este tipo de estructura, el cuerpo del buclese repite MIENTRAS se cumple una determinada condicin, que especificamos entre parntesis. Su estructura, genricamente, es esta:
mientras(condicin) hacer accin 1 ........ accin N fin mientras

Bucles, estructuras repetitivas (II)


Una forma diferente de escribir una estructura mientras, que es ms 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 nmeros del 1 al 10.

Genial, ya tengo mi primer programa, Y ahora?


Una vez que tenemos un programa escrito en pseudocdigo (nombre que recibe esa forma en la que venamos escribiendo los algoritmos en las slides anteriores), el primer paso es traducirlo a algn lenguaje de programacin (ms adelante podremos saltarnos este paso). Por suerte, esta traduccin es, en general, bastante directa.

Genial, ya tengo mi primer programa, Y ahora? (II)


A continuacin tendremos que convertir el programa que acabamos de escribir en algo que pueda comprender la mquina. Este proceso se conoce con el nombre de compilacin, y es automtico

Eso es todo amigos?


En general, si. Salvando un pequeo detalle: El ejecutable generado solo funcionar en la plataforma (combinacin de hardware y sistema operativo) para la que fue compilado.

Y qu es eso del sistema operativo?


Para facilitar an ms la comunicacin entre el humano y la mquina, existen los sistemas operativos. Un sistema operativo es una pieza de software que simplifica el manejo de la computadora, desempeando una serie de funciones bsicas esenciales para la gestin 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 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++.

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 configuracin de red que ellos haban 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 molcula animada en una reunin 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 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.

.java, .class, JVM???

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.

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 programacin orientada a objetos se basa en que cada programa es una simulacin de un mundo real o virtual. Cada uno de estos mundos esta compuesto de objetos. Los objetos se comunican a travs de mensajes Por lo tanto, un programa orientado a objetos no es mas que una configuracin de un conjunto de objetos y los mensajes que se envan entre ellos. El molde que guarda la descripcin de todos los objetos de un mismo tipo e lo que conocemos como clase. A su vez, las clases con propsitos similares pueden agruparse en paquetes. La ejecucin de un programa comienza en el mtodo main de una clase.

Ejemplo de paquete

Reglas para la creacin 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 implementacin 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.io
El paquete de entrada/salida contiene las clases de acceso a archivos: FileInputStream y FileOutputStream, etc.

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).

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 intrprete Java. Las Java class libraries organizadas como una coleccin de paquetes. Un nmero importante de programas de demostracin. Varias herramientas de soporte y componentes, incluyendo el cdigo fuente de las clases en la biblioteca.

URL: java.sun.com/javase/downloads

Ambientes de desarrollo Java (IDEs)


Un IDE (del ingls Integrated Development Enviroment) es un ambiente que integra un conjunto de herramientas (editor con prestaciones especiales, compilador, administracin 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 cmodo 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: indentacin de cdigo, resaltador de sintxis, matching de variables y llaves, etc. Parsing en tiempo de ejecucin: correccin de errores, remarcado de ocurrencias, tips, arreglos sencillos, etc. Generacin automtica de cdigo y funciones para completar cdigo mientras escribimos. Administracin de proyectos Debugger Mltiples opciones de configuracin

Algunos de los IDEs mas utilizados

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.

Proceso de instalacin de NetBeans


Bajar e instalar la ltima versin del JDK (requerido). Ingresar a http://download.netbeans.org y bajar la versin correspondiente a nuestro sistema operativo. Ejecutar el instalador (.sh, .exe, o .dmg dependiendo). Seguir el proceso de instalacin y ejecutar la aplicacin netbeans al finalizar el mismo.

Ejemplo de aplicacin en NetBeans

Ejercicio 3
Repetir el ejercicio 2, esta vez en Java.

Parte 3: herrmientas para ensear 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

SAI - Iniciativa Academica de Sun


Entrenamiento GRATIS va web de JavaTM, SolarisTM y ms.
Pgina de la iniciativa: http://ar.sun.com/training/sai/index.jsp Cursos en: http://sailearningconnection.skillport.com/

Program name: SAI-Argentina Program ID: tbwg1fq8

SAI - Iniciativa Academica de Sun (II)


Increment tu potencial de obtener salarios mayores con certificaciones Sun Sun Certified Associate/Programmer for the Java 2 Platform SE Sun Certified Web Component Developer for Java EE Sun Certified Mobile Application Developer for Java ME Sun Certified System/Network Admin for Solaris Operating System Exmenes de entrenamiento gratis Exmenes oficiales rebajados un 60%

Preguntas?

MUCHAS GRACIAS!
Ezequiel Aranda Ezequiel.Aranda@sun.com blogs.sun.com/argentina_ambassador twitter.com/ambassadorsarg twitter.com/fleko

80