Este documento presenta una introducción a Java y su proceso de resolución de problemas. Describe Java como un lenguaje de programación orientado a objetos diseñado para aplicaciones web. Explica las etapas del proceso de resolución de problemas con Java: análisis, diseño de algoritmos, codificación, compilación, ejecución, depuración y mantenimiento. Luego profundiza en los conceptos de análisis de problemas, diseño de algoritmos y codificación.
1. Sistema
Operativo
Características
Windows 7 Última versión del sistema operativo Windows de Microsoft.
Sustituye al poco exitoso Windows Vista. H tenido una gran
repercusión e impacto tanto en computadoras grandes, como
en personales y portátiles (laptop, notebooks, netbooks,
etcétera).
Chrome Sistema operativo de Google, pensado para computadoras
tipo netbooks; se presentó en 2010 pero todavía no se
comercializa.
Windows Vista Sistema operativo de Microsoft que se presentó a principios
del año 2007 y que no ha tenido gran éxito.
Windows XP Sistema operativo más utilizado en la actualidad, tanto en el
campo de enseñanza como en la industria y negocios. Su
fabricante es Microsoft.
Windows
98/ME/2000
Versiones anteriores de Windows que todavía se utilizan
UNIX Sistema operativo de fuente abierta, escrito en C y que aún se
utiliza en el campo profesional.
Linux Sistema operativo de fuente abierta, gratuito y de libre
distribución. Similar a UNIX y una gran alternativa ante
Windows. Actualmente se utiliza en servidores de aplicaciones
para internet.
Mac OS Sistema operativo de las computadoras Apple Macintosh. Su
versión más popular es Mac OS X.
DOS, MS-DOS y
OS/2
Sistemas operativos creados por Microsoft e IBM
respectivamente. Actualmente son poco utilizados pero son la
base de los actuales sistemas operativos.
CP/M Sistema operativo de 8 bits para las primeras
microcomputadoras de la década de 1970.
IPhone OS (IOS) Sistema operativo que utilizan los teléfonos iPhone de Apple.
En la actualidad 4.0 es la última versión y sirve para teléfonos
3G, 3GS y previsiblemente 4G.
Android Sistema operativo abierto creado por Google que tiene gran
aceptación en teléfonos inteligentes (smartphones). Ultimas
versiones 2.3 y 3.0.
Symblan Sistema operativo para teléfonos móviles apoyado
fundamentalmente por el fabricante de teléfonos celulares
Nokia.
PalmOS Sistema operativo para agendas digitales (PDA) del fabricante
Palm, propiedad de Hewlett-Packard.
Windows Mobile Sistema operativo para teléfonos móviles con arquitectura y
apariencias similares a Windows XP.
Windows Phone 7 Versión de Windows 7 para teléfonos inteligentes que
Microsoft comercializa desde octubre de 2010.
2. LIBRO: PROGRAMACION EN JAVA
Algoritmos, programación orientada a objetos e interfaz grafica de usuario
Luis Joyanes Aguilar
Ignacio Zahonero Martinez
JAVA
Es un lenguaje de programación creado para desarrollar programas que ejecuten
tareas de diversos tipos tales como escribir documentos, hojas de cálculo, nominas
o aplicaciones estadísticas, navegadores (browsers), programas de correo
electrónico, etc. y se diseñó de manera concreta para realizar una amplia gama de
actividades en internet.
Resolución de problemas con JAVA
El proceso para resolver problemas con una computadora implica la escritura de un
programa y su posterior ejecución; así, la programación es un proceso de resolución
de problemas. Existen diferentes técnicas para resolverlos, y aunque el proceso de
diseñar y construir programas es esencialmente creativo, se pueden considerar
diferentes etapas en el proceso de programación. Las fases de resolución de un
problema y sus características más destacadas son:
Análisis: El problema se examina considerando la especificación de los
requisitos dados por el cliente, respecto al programa.
Diseño del Algoritmo: Una vez que se analiza el problema, se diseña una
solución que conduzca a un algoritmo (método) que lo resuelva.
Codificación (implementación): La solución se escribe en la sintaxis de algún
lenguaje de alto nivel, en este caso Java, y se obtiene un programa fuente que a
continuación se compilara.
Compilación y ejecución: El programa se agrupa, en el caso de Java se
interpreta, y ejecuta.
Verificación y depuración: El programa se comprueba rigurosamente y se
eliminan todos los errores que aparezcan; dichas erratas se les domina bugs.
Mantenimiento: El programa se actualiza y se modifica cada vez que sea
necesario para que se cumplan todas las necesidades de los usuarios; en esta
fase se utilizan y mejoran los algoritmos realizando los cambios si los requisitos
así lo exigen.
Documentación: Escritura de las diferentes fases del ciclo de vida del software,
escecialmente el análisis, diseño y codificación; junto con manuales de usuario y
de referencia, así como normas para el mantenimiento.
3. Análisis del problema
Esta fase requiere definir el problema y especificar claramente las tareas que el
programa debe realizar y el resultado o solución que se espera; esta etapa se divide
en varias fases:
Comprender el problema lo más fielmente posible
Entender y describir los requerimientos o requisitos del problema. Es necesario
aclarar si el programa requiere interacción con el usuario para leer datos de
entrada y especificar los formatos de salida o resultados.
Especificar los datos supone describirlos y representarlos en su formato
correspondiente.
Si el programa produce una salida, se debe especificar como generar y dar
formato a los resultados.
El análisis del problema requiere una definición clara que considere exactamente lo
que el programa hará y la solución que se espera; a continuación especificamos
algunas interrogantes que hay que tener presentes en esta fase:
¿Qué entradas se requieren? El tipo y cantidad de datos con los cuales se trabaja.
¿Cuál es la salida deseada? El tipo y cantidad de datos esperados en los
resultados.
¿Qué método produce la salida deseada? Los requisitos o necesidades adicionales
y las restricciones de la solución.
Diseño del algoritmo
Después de analizar el problema y la descripción de las especificaciones
necesarias, el paso siguiente es diseñar un algoritmo que lo resuelva; para esto, la
computadora necesita que se le indiquen las tareas o acciones a ejecutar y su orden
sucesivo. Un algoritmo es un método para resolver un problema mediante una serie
de pasos precisos, definidos y finitos (la solución se alcanza en tiempo definido).
Los pasos sucesivos que indican las acciones o instrucciones a ejecutar por la
maquina constituyen el algoritmo; para completarlo se requiere el diseño previo del
mismo, lo cual es independiente tanto del lenguaje de programación en que se
expresara como la computadora que lo ejecutara. En la resolución del problema, el
algoritmo se puede expresar en un lenguaje de programación diferente y ejecutarse
en una computadora distinta, pero será siempre el mismo; por ejemplo: en una
analogía de la vida diaria, una receta de cocina se puede expresar en español,
inglés o francés, pero independientemente del lenguaje que hable el cocinero, los
pasos de la receta serán los mismos.
4. La especificación del orden en el que se realizan las instrucciones o acciones del
programa, se denomina control del programa; este control se realiza con
instrucciones secuenciales o repetitivas (bucles o lazos).
Las instrucciones del algoritmo en los lenguajes de programación de alto nivel
también se conocen como sentencias.
En la etapa del análisis del proceso de programación se determina lo que el
programa hará y en la etapa de diseño se define como se realizara la tarea
solicitada; los métodos más eficaces para diseñar se basan en la sentencia de Julio
Cesar: divide y vencerás, es decir la solución de un problema complejo se realiza
dividiendo el problema en subproblemas y a continuación fraccionando estos
subproblemas en otros de nivel más bajo hasta que pueda implementarse una
solución; este método se conoce técnicamente como diseño descendente (top-down)
o modular. El proceso de dividir el problema en etapas y expresar cada paso
en forma detallada se denomina refinamiento sucesivo, donde cada subprograma se
resuelve mediante un módulo o subprograma que tiene un solo punto de entrada y
un solo punto de salida.
Cualquier software bien diseñado consta de un programa principal, siendo este el
módulo de nivel más alto que llama a subprogramas o módulos de nivel más bajo
que a su vez pueden llamar a otros subprogramas. Los módulos pueden planearse,
codificarse, comprobarse y depurarse independientemente, incluso por diferentes
programadores que los podrán combinar entre sí.
El proceso implica ejecutar los siguientes pasos hasta que el programa se concluye:
1.- Programar un modulo
2.- comprobarlo
3.- Si es necesario, depurarlo
4.- Combinarlo con los módulos anteriores.
El proceso que convierte los resultados del análisis del problema en un diseño
modular con refinamientos sucesivos que permitan una posterior traducción aun
lenguaje de programación en el que posteriormente se codificara.
Como último paso en el diseño del algoritmo se debe comprobar y verificar su
exactitud; es decir, que produzca un resultado en un tiempo finito. Los métodos que
utilizan algoritmos se denominan algorítmicos. En contraste con los métodos
heurísticos que implican algún juicio o interpretación, los primeros se pueden
implementar en computadoras, mientras que los segundos, con dificultad.
Los algoritmos se pueden expresar y representar gráficamente por medio de
fórmulas, diagramas de flujo N-S y pseudocodigos; esta última representación es la
más utilizada en las técnicas de programación modernas.
5. Ejemplo de un algoritmo “ir al cine a ver la película de Harry Potter”
1.- inicio
2.- ver la cartelera de cines por internet
3.- si no proyectan “Harry Potter” entonces
3.1.- decidir otra actividad
3.2.- bifurcar al paso 7
sino
3.3.- ir al cine
fin_si
4.- si hay fila entonces
4.1.- formarse
4.2.- mientras haya personas delante hacer
4.2.1.- avanzar en la fila
fin_mientras
fin_si
5.- si hay localidades entones
5.1.- comprar una entrada
5.2.- ingresar a la sala
5.3.- localizar la(s) butaca(s)
5.4.- mientras proyectan la película hacer
5.4.1.- Ver la película
fin_mientras
5.5.- abandonar el cine
si_no
5.6.- refunfuñar
fin_si
6.- volver a casa
6. 7.- fin
En el algoritmo anterior hay diferentes aspectos a considerar. En primer lugar,
algunas palabras reservadas se han escrito deliberadamente en negrita (mientras,
si_no; etc.). Estas palabras describen las estructuras fundamentales y los procesos
de toma de decisión en el algoritmo; también incluyen los conceptos importantes de
selección (expresadas por si-entonces- si_no, if-then-else) y de repetición
(expresadas con mientras-hacer, hacer-mientras o a veces repetir-hasta o
interar-fin_interar, en ingles, while do y do while, repeat-until) que se encuentran
en casi todos los algoritmos, especialmente en los de proceso de datos. La
capacidad de decisión permite seleccionar alternativas de acciones a seguir o
indicar la repetición una y otra vez de operaciones básicas:
si proyectan la película seleccionada ir al cine
si_no ver la televisión, ir al futbol o leer el periódico
Codificación
La codificación es la escritura en lenguaje de programación de la representación del
algoritmo desarrollada en las etapas precedentes. Puesto que el diseño de un
algoritmo es independiente del lenguaje de programación utilizado para su
implementación, el código puede escribirse con facilidad en un lenguaje o en otro.
Para convertir el algoritmo en programa se deben sustituir las palabras reservadas
en español por sus equivalentes en ingles, y las operaciones/instrucciones indicadas
en lenguaje natural por las correspondientes en el lenguaje de programación
correspondiente, siguiendo las reglas de sintaxis del mismo. Al terminar el diseño
del algoritmo y verificar su exactitud, se procede a convertirlo en un programa y se
escribe en lenguaje de alto nivel, en este caso, Java en alguna de sus versiones.
Una vez escrito el código fuente del programa, este se debe introducir en la
computadora mediante un editor de textos siguiendo las reglas de sintaxis de Java.
Esta operación se realiza con un programa editor para posteriormente convertir el
código fuente en un archivo de programa que se guarda o graba para su uso
posterior.
En el caso de Java, el programa fuente se guarda en un archivo de texto
denominado NombrePrograma con la extensión .java, es decir
NombrePrograma.java; el paso siguiente es compilar el código fuente. Si hay fallas,
el compilador generara mensajes de error que se deben identificar y corregir para
compilar nuevamente. Este paso se debe realizar las veces necesarias para eliminar
todos los errores. El compilador genera el código maquina o bytecode en el caso de
Java, cuando se han eliminado todos los errores de sintaxis.