taller de introduccion a la programacion java

Anuncio
TALLER DE
INTRODUCCIÓN A LA
PROGRAMACIÓN
Ezequiel Aranda
Sun Campus Ambassador
1
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 "si... entonces". 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
Java se creó originalmente como una
herramienta de programación 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
máquina 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 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:
James Gosling, Arthur Van Hoff, y Andy Bechtolsheim. Otras
abogan por “Just Another Vague Acronym”.
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 (Application Programming Interface)
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.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
Miscelánea de clases útiles para muchas
cosas en programación.
Incluyen, Date (fecha), Dictionary
(diccionario), Random (números 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 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 Integrated Development Enviroment) 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 JavaTM, SolarisTM 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
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
Exámenes de entrenamiento gratis
Exámenes 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
Descargar