SlideShare una empresa de Scribd logo
1 de 144
Descargar para leer sin conexión
Excelencia Académica
5
PROGRAMACIÓN GENERAL
UNIDAD TEMÁTICA Nº 1
Representación de datos en el computador
Estructura de un computador
Hardware
Software y lenguajes de programación
Autoaprendizaje 8 horas
UNIDAD TEMÁTICA Nº 2
Fundamentos de la Programación Orientada a Objetos
El lenguaje de Programación Java
Modelamiento de Problemas
Actividad 2.1
Componentes de una solución
Actividad 2.2
Modelaje
Características de los datos
Especificación
Actividad 2.3
Refinamiento a pasos
Pasos para el refinamiento a pasos
Actividad 2.4
Autoaprendizaje 8 horas
UNIDAD TEMÁTICA Nº 3
Estructura de un programa orientado a objetos
Gramática en Java
Comentarios
Identificadores
Palabras reservadas
Importación de clases
Declaración de clases y métodos
El IDE de Java
Tipos de datos en Java
Declaración de datos
Instrucciones en Java
Operadores aritméticos
Instrucciones de salida de datos en Java
Instrucciones de entrada de datos en Java
Traducción del modelaje y especificación a un programa Java
Autoaprendizaje 8 horas
UNIDAD TEMÁTICA Nº 4
Taller de programación 1
La clase math
Funciones matemáticas
La clase carácter
Excelencia Académica
6
Declaraciones
Comprobaciones boleanas
Traslación de caracteres
Métodos de la clase carácter
La clase float
La clase double
La clase integer
La clase long
La clase bolean
La clase String
Autoaprendizaje 8 horas
UNIDAD TEMÁTICA Nº 5
Estructuras de Control
Estructura condicional if y switch
La sentencia switch
Actividad 5.1
Ciclos repetitivos
Bucle while
Bucle do-while
Bucle for
Sentencias de salto: break, continue y return
Sentencia break
Sentencia continue
Sentencia return
Actividad 5.2
Autoaprendizaje 8 horas
UNIDAD TEMÁTICA Nº 6
Métodos, características y propiedades
Clases y métodos abstractos
Modificadores de visibilidad
Otros modificadores
Conceptos básicos de arreglos
Declaración de arreglos
Creación de objetos de arreglos
Arreglos multidimensionales
Autoaprendizaje 8 horas
UNIDAD TEMÁTICA Nº 7
Paquetes
Autoaprendizaje 8 horas
UNIDAD TEMÁTICA Nº 8
Gráficos
Autoaprendizaje 8 horas
Excelencia Académica
7
TABLA DE CONTENIDO
UNIDAD TEMÁTICA I
Representación de datos en el computador 9
Estructura de un computador 11
Hardware 11
Software y lenguajes de programación 13
UNIDAD TEMÁTICA II
Fundamentos de la Programación Orientada a Objetos 17
El lenguaje de Programación Java 19
Modelamiento de Problemas 20
Componentes de una solución 21
Modelaje 22
Características de los datos 22
Especificación 22
Refinamiento a pasos 23
Pasos para el refinamiento a pasos 24
UNIDAD TEMÁTICA III
Estructura de un programa orientado a objetos 29
Gramática en Java 29
Comentarios 29
Identificadores 30
Palabras reservadas 31
Importación de clases 31
Declaración de clases y métodos 32
El IDE de Java 32
Tipos de datos en Java 35
Declaración de datos 37
Instrucciones en Java 37
Operadores aritméticos 38
Instrucciones de salida e datos en Java 40
Instrucciones de entrada de datos en Java 41
Traducción del modelaje y especificación a un programa Java 41
UNIDAD TEMÁTICA IV
Taller de programación I 47
La clase math 49
Funciones matemáticas 50
La clase carácter 53
Declaraciones 53
Comprobaciones boleanas 53
Traslación de caracteres 53
Métodos de la clase carácter 53
La clase float 54
La clase double 54
Excelencia Académica
8
La clase integer 55
La clase long 56
La clase bolean 57
La clase String 58
UNIDAD TEMÁTICA V
Estructuras de Control 65
Estructura condicional if y switch 65
La sentencia switch 66
Ciclos repetitivos 69
Bucle while 70
Bucle do-while 70
Bucle for 71
Sentencias de salto: break, continue y return 71
Sentencia break 71
Sentencia continue 72
Sentencia return 73
UNIDAD TEMÁTICA VI
Métodos, características y propiedades 77
Clases y métodos abstractos 78
Modificadores de visibilidad 80
Otros modificadores 81
Conceptos básicos de arreglos 82
Declaración de arreglos 82
Creación de objetos de arreglos 83
Arreglos multidimensionales 85
UNIDAD TEMÁTICA VII
Conceptos básicos de la programación orientada a objetos 89
Atributos 89
Comportamiento 89
El proyecto 90
La clase 90
Los constructores 93
La vida de un objeto 97
Composición 100
Los paquetes 104
Classpath 105
Los paquetes estándar 107
Interfaces 107
UNIDAD TEMÁTICA VIII
Fundamentos para el dibujo con Java 115
Las funciones Saint, repaint y update 115
Visualización de las imágenes 118
Dibujos 123
Apéndices 129
Excelencia Académica
9
REPRESENTACIÓN DE DATOS DE UN
COMPUTADOR
Los computadores manejan los datos usando solamente los dígitos binarios 0 y 1 a los que
se les denomina bit. Con este sistema los números se calculan usando potencias de 2 en el
sistema de numeración binario.
Los números binarios se pueden representar fácilmente en otras potencias cuya base es
múltiplo de 2, como la base 8 u octal y la base 16 o hexadecimal.
Una forma fácil de pasar de binario a octal es agrupar los bits de 3 en 3 y representar su
número octal:
Binario Octal
000 0
001 1
010 2
011 3
100 4
101 5
110 6
111 7
De forma similar, se pueden representar los datos en base hexadecimal (base 16), basta
con agrupar los bits en grupos de 4 y representar sus números equivalentes en
hexadecimal:
Binario Hexadecimal Decimal Binario Hexadecimal Decimal
0000 0 0 1000 8 8
0001 1 1 1001 9 9
0010 2 2 1010 A 10
0011 3 3 1011 B 11
0100 4 4 1100 C 12
0101 5 5 1101 D 13
0110 6 6 1110 E 14
0111 7 7 1111 F 15
Excelencia Académica
10
Los Números con Signo
De acuerdo al sistema de numeración que se use se reserva por lo general el bit de más a
la izquierda para el signo. Para evitar las ambigüedades del cero cuando se usan la
representación con signo casi universalmente se ha adoptado el sistema de representación
en complemento a 2. La conversión es un poco más difícil de entender inicialmente, pero la
representación en complemento a 2 con números de 8 bits seria:
Binario Decimal
0011 3
0010 2
0001 1
0000 0
1101 -1
1110 -2
1111 -3
En cualquier caso, con 8 bits se pueden representar números sin signo desde 0 hasta 255
mientras que los números con signo serán desde -128 hasta 127.
Los números se representan según algoritmos o métodos de conversión que dependen del
tipo de dato que se quiere representar como enteros sin signo, enteros con signo, números
reales o de punto flotante, números reales de doble precisión, etc.
En cambio el otro tipo de datos que se maneja son los caracteres que van a formar los
textos, estos caracteres se representan mediante un código numérico equivalente, es decir
a cada símbolo de texto o carácter se se asigna un número equivalente llamado código,
siendo el más común el código ASCII que sirve para representar hasta 256 caracteres
diferentes con valores equivalentes desde 0 a 255.
Como la cantidad de caracteres necesarios para realizar comunicaciones es mayor a 256
símbolos, como el caso del español que maneja la ñ y las tildes, o en otros lenguajes que
manejan símbolos especiales, se ha tenido que ampliar la cantidad de símbolos codificados
por lo que actualmente se maneja el UNICODE que dispone de una mayor cantidad de
códigos ya que maneja 16 bits que equivale a 65,536 códigos diferentes.
Así, la letra A se representa con el código 65, el espacio en blanco tiene el código 32, la
letra a se representa con el código 97, el carácter de tabulación tiene el código 9, etc.
Se denomina byte al grupo de 8 bits y es la unidad básica de almacenamiento de datos que
se usa. Esta unidad tiene algunos múltiplos conocidos que son los siguietes:
Kilobyte o Kbyte o Kbequivale a 210
bytes o 1,024 bytes aprox. 103
bytes
Megabyte o Mbyte o Mb equivale a 220
bytes o 1’048,576 bytes aprox. 106
bytes
Gigabyte o Gbyte o Gb equivale a 230
bytes o 1,073’741,824 bytes aprox. 103
bytes
Excelencia Académica
11
Estructura de un Computador
Todos los computadores para su funcionamiento requieren dos componentes
fundamentales que son el Hardware y el Software.
Hardware
Son todos los componentes físicos que forman parte de la computadora, es todo lo que se
puede ver y tocar.
Todos los computadores personales tienen una estructura similar que esta formada por
cuatro componentes básicos que son : La CPU (Unidad Central de Procesamiento), La
Memoria, Unidades de entrada/salida y los dispositivos de almacenamiento.
La Unidad Central de Procesamiento (CPU o microprocesador) es el componente principal
y es el lugar en donde se realizan las operaciones lógicas y matemáticas siendo sus
elementos principales los siguientes:
- La Unidad de Control : es la responsable de ejecutar las instrucciones y controlar el
computador.
- Unidad Aritmético Lógica (ALU) donde se realizan las operaciones aritméticas y
lógicas.
- Registros, son pequeñas memorias de alta velocidad donde se almacenan datos e
instrucciones que se están ejecutando.
La evolución respecto a la velocidad de estos procesadores ha sido vertiginosa ya
actualmente los Pentium IV tienen velocidades de 2.4 y 3.0 MHz.
La memoria
La memoria de un computador es el lugar donde se almacenan los datos que el
computador usa como son las instrucciones, los valores de las variables, los valores de las
constantes, el código de programa, el código de las funciones y/o métodos, etc.
En forma básica las memorias pueden ser de dos tipos, memoria RAM y memoria ROM.
Existen otros tipos de memoria derivados de estos dos tipos fundamentales, pero para
nuestro estudio solamente trataremos estos dos tipos de memoria.
El tamaño de una memoria se mide o especifica en bytes con sus múltiplos Kilobyte,
Megabyte o Gigabyte que equivalen aproximadamente a mil bytes, un millón de bytes y mil
millones de bytes respectivamente como se ha visto en un tema anterior.
La memoria RAM
La Memoria de Acceso Aleatorio (RAM) es el lugar en donde se almacenan
los datos e instrucciones del programa así como los datos generados durante la ejecución
del programa. Esta memoria es volátil ya que los datos que almacena se pierden si se
interrumpe la fuente de energía eléctrica. Como su nombre lo indica es una memoria de
acceso aleatorio, es decir el programador tiene acceso total a esta memoria para poner
Excelencia Académica
12
datos, modificar sus valores, borrar datos o instrucciones, etc. Por lo que en esta memoria
se pueden leer y escribir datos.
El tamaño actual más difundido de memoria RAM es de 256 Mb.
La memoria ROM
La memoria ROM (Read Only Memory), es la memoria solamente de lectura. En esta
memoria se almacenan datos y programas que solamente pueden ser leídos para su uso
posterior. Esta memoria, como su nombre lo indica, es una memoria solamente de lectura y
los datos que almacena no pueden ser modificados. Esta memoria es permanente o no
volátil, es decir que los datos guardados no desaparecen cuando se interrumpe la fuente
de energía eléctrica como ocurre con las memorias RAM.
Un ejemplo de este tipo de memoria es la BIOS (Basic Input Output System) de la
computadora, que tiene almacenado el programa de arranque inicial de la computadora
que se ejecuta cada vez que prendemos la computadora y nunca puede ser modificado.
Dispositivos de entrada de datos
Los dispositivos de entrada de datos son la base de la comunicación entre el hombre y el
computador, son dispositivos que sirven para convertir las señales analógicas, usadas por
el hombre, en señales digitales entendibles por la computadora.
Los dispositivos de entrada más comunes son el teclado, mouse, lectora óptica, lápiz
óptico, scanner, etc.
Dispositivos de salida de datos
Los dispositivos de salida de datos son las interfases máquina-hombre, son aquellos que
se encargan de convertir las señales digitales en señales analógicas que el ser humano
puede entender.
Los dispositivos de salida más comunes son el monitor de video, las impresoras, ploter,
etc.
Dispositivos y medios de almacenamiento
Los medios de almacenamiento proporcionan almacenamiento permanente de datos, son
más lentos que la memoria RAM pero permiten almacenar gran cantidad de datos
almacenando programas y datos. Estos dispositivos son los diskettes, discos duros, CD
Rom, DVD, etc. Siendo el más común el disco duro de 80 Gb.
Los dispositivos de almacenamiento son los equipos que manejan los medios de
almacenamiento como las lectoras de CD Rom, los disketeras o floppy, etc.
Excelencia Académica
13
Software y lenguaje de programación
El hardware solo no puede ejecutar ni hacer nada por lo que es necesario que todo
computador tenga también su software. El software es el llamado programa, es un conjunto
de instrucciones u ordenes con una secuencia definida que el computador ejecuta. Estas
instrucciones se escriben en un lenguaje que el computador entienda.
A medida que la estructura y la programación de los computadores se fue complicando y
creciendo, los fabricantes empezaron a proporcionar utilidades para hacer más fácil la
administración y programación del computador implementando sistemas operativos,
compiladores y programas de usuario.
De acuerdo a este cuadro hay dos capas fundamentales:
Software de sistema o software base, es decir aquel que proporciona los mecanismos de
gestión del hardware como el sistema operativo y las utilidades para desarrollar el software
de aplicación (compiladote, editores, bibliotecas, etc.). Sirven como base para el desarrollo
y la ejecución de otros programas y permite que el software de aplicación pueda acceder al
hardware subyacente. Los sistemas operativos para computadoras personales más
comunes actualmente son Windows y Linux. Además de su software propio incluyen
muchas bibliotecas y utilidades externas al sistema operativo, pero que también se
consideran software del sistema.
Software de aplicación, es decir aplicaciones que facilitan el acceso a los servicios del
computador. A veces como en el caso de Windows son estas aplicaciones las que
caracterizan al sistema de computación como su interfaz grafica, su explorador y sus
herramientas ofimáticas que son software de aplicaron muy útiles para los usuarios.
Además del sistema operativo y sus bibliotecas, el software de sistema incluye editores
para introducir textos y programas en el computador, como compiladores, intérpretes, etc.
Los compiladores permiten traducir un programa escrito en un lenguaje de alto nivel a un
formato intermedio denominado código objeto y este código se traduce a lenguaje de
máquina mediante un enlazador (linker). Cada lenguaje necesita su propio compilador,
pero el enlazador es el mismo para cada arquitectura y tipo de archivo ejecutable.
Hay muchos lenguajes de programación, al igual que hay muchas lenguas en el mundo.
Sin embargo, se pueden clasificar en base a su complejidad en:
- Lenguajes de máquina, cada CPU o procesador entiende su propio lenguaje
denominado lenguaje de máquina. Las instrucciones de este lenguaje están
codificadas en binario y son de muy bajo nivel, siendo muy tedioso y difícil escribir
programas directamente en lenguaje de máquina.
Programas de Usuario, Aplicaciones
Compiladores Editores Bibliotecas …
Sistema Operativo
Hardware
Excelencia Académica
14
- Lenguaje Ensamblador, permite una programación simbólica con instrucciones
lógicas, que posteriormente se traducen a lenguaje de máquina por medio de un
compilador. Escribir programas en lenguaje ensamblador es mucho más rápido,
pero no lo suficiente como para escribir programas complejos.
- Lenguajes de Alto Nivel, permiten a los programadores expresar estructuras de
datos y de control de forma más sencilla y más parecida a la lógica de aplicaciones
que a las necesidades de arquitectura del computador. El primer lenguaje de este
tipo fue FORTRAN, luego COBOL y le siguieron muchos lenguajes entre ellos
Pascal, C y Turbo C, Java y otros.
Toda computadora tiene dos componentes que son el hardware y el software siendo el
hardware la parte física y el hardware la parte lógica o de los programas.
Los datos se representan por medio de bits donde los números son representados
mediante algoritmos que de acuerdo al tipo de número lo convierten a una representación
de bits.
Los caracteres de texto se representan mediante números equivalentes llamados códigos
siendo el más común los Códigos ASCII aunque actualmente por la cantidad de símbolos
que se manejan se ha difundido el UNICODE.
El harware básico de la computadora está formado por las unidades de entrada, unidades
de salida, la unidad central de procesamiento o CPU y la memoria teniendo además
componentes adicionales llamados periféricos que se conectan a la CPU como son las
unidades de almacenamiento y otros.
Fco. Javier Ceballos Curso de Programación Java 2
Alfaomega-Rama, España 2,003 Segunda Edición
Luis Joyanes Aguilar Programación en Java
Prentice Hall, España
José Pérez Mayor Programación en Java Paso a Paso
Thomson, España 2,003
Deitel y Deitel Curso de Programación en Java
Prentice Hall, España, 1,995
Excelencia Académica
15
Habiendo estudiado la representación de datos y los componentes hardware y software de
la computadora, en el siguiente UNIDAD TEMÁTICA se estudiará los fundamentos de la
programación orientada a objetos y la construcción de programas usando el lenguaje Java.
Se debe tener en cuenta que las computadoras solo manejan números, y más
específicamente números binarios por lo que todos los datos que manejan deben ser
representados como números binarios. La programación usando números binarios o
lenguaje de máquina es muy complicada por lo que se usan lenguajes de alto nivel como
Java para escribir los programas de aplicación.
- Investigar como se realiza la representación de números reales con signo.
- Buscar y copiar el código ASCII y verificar el código de las letras, números y signos de
puntuación.
- En una computadora identificar sus componentes de hardware y sus respectivas
características como la velocidad y capacidad de memoria.
Identifica y describe los componentes de hardware y software de la computadora.
Explica en forma clara cómo se representan los datos en la computadora y lo que son los
lenguajes de programación.
Excelencia Académica
16
Nº 1
Nombre__________________________________________________________________
Apellidos_______________________________________Fecha _____________________
Ciudad ______________________________Semestre_____________________________
1.- Describir las partes de un computador referido al hardware del equipo.
2.- Describir la clasificación de los lenguajes de programación de acuerdo a su
complejidad.
3.- Describir los tipos de memoria, sus características, su uso, sus unidades y sus
aplicaciones.
4.- Con ejemplos, explicar lo que son los lenguajes de programación.
5.- Explicar los niveles del software, referido a su construcción y orientación.
Excelencia Académica
17
FUNDAMENTOS DE LA PROGRAMACIÓN
ORIENTADA A OBJETOS
Los avances en el hardware de las computadoras no a correspondido a los avances
equivalentes en el desarrollo de programas o software. Un hardware sin software no
funciona y por lo tanto es importante la implementación de programas de aplicación para
los usuarios.
La producción de aplicaciones más potentes suele significar la presencia de una
complejidad cada vez mayor. Los sistemas orientados a objetos tienen características
adecuadas para expresar la complejidad de un sistema, algunas de las cuales son:
- Adaptabilidad, es decir, facilidad de transporte de unos sistemas a otros. Java se
ejecuta sobre una máquina virtual que es su estándar, por tanto, una aplicación se
puede adaptar y transportar a cualquier sistema que tenga una máquina virtual.
- Reusabilidad, total o parcial, para reducir costos y reutilizar componentes software
cuya fiabilidad esta comprobada.
- Mantenibilidad, los programas son construidos por muchas personas agrupadas en
equipos de trabajo. Con el tiempo estas personas cambian, pero la aplicación
permanece e incluso necesita modificaciones. Por ello es importante que los
programas sean fáciles de comprender y mantener. En caso contrario sería
necesario descartar la aplicación y hacer una nueva. En el caso de Java se tiene un
lenguaje especial para la documentación llamado Javadoc que permite documentar
los programas desarrollados.
Para conseguir estos objetivos se debe aplicar criterios de diseño claros y bien definidos
que permitan hacer frente a la complejidad de las aplicaciones, para lo cual se usan
técnicas de diseño orientado a objetos. El diseño orientado a objetos consiste en averiguar
cuales son los objetos de un sistema, las clases en que se pueden agrupar y las relaciones
entre objetos.
Los conceptos de clase y objeto son los más importantes de la programación orientada a
objetos. Un objeto es cualquier cosa tangible o intangible que se pueda imaginar, definida
frente al exterior mediante unos atributos y las operaciones que permiten modificar dichos
atributos. Por ejemplo una cuenta bancaria, un motor, una carpeta, un alumno son
ejemplos de objetos, pero también lo es una estructura de datos tipo pila, lista, etc. Cada
objeto particular se obtiene como una especificación de una entidad más general
denominada clase.
Excelencia Académica
18
Una clase es una plantilla que permite definir un conjunto de objetos. Por ejemplo alumno
es una clase de objetos caracterizado por tener apellidos, nombres, fecha de nacimiento,
sexo, nacionalidad, facultad, etc. Por ejemplo el alumno Juan Ramos de Ingeniería de
Sistemas, peruano se obtiene instanciando la clase alumno para ese caso particular. La
creación de un objeto a partir de una clase se denomina instanciación. Además, en la
programación orientada a objetos se usa un mecanismo denominado herencia para diseñar
dos o más entidades que son distintas pero comparten muchas características. En
cualquier caso es necesario definir una clase antes de poder crear una instancia
(objeto) de la clase.
En el diseño orientado a objetos, se definen los atributos externos de un objeto y los
métodos que exporta. El resto de la información queda oculta. Además, se pueden
especificar relaciones de herencia y de polimorfismo. El diseño orientado a objetos esta
directamente ligado, aunque no es obligatorio, con los lenguajes de programación
orientado a objetos. La técnica de diseño orientada a objetos más popular es UML (Unified
Modelling Language). Usando estas técnicas se puede conseguir crear clases que tengan
características fundamentales como:
- La modularidad, proceso de dividir un objeto en piezas más pequeñas, o módulos,
para que algún objetivo sea más fácil de conseguir. Los módulos se suelen asociar
a estructuras de datos y las operaciones sobre ellas. Si estos módulos tienen
significado semántico se relacionan con objetos.
- La abstracción, que permite extraer las propiedades más importantes de un objeto,
dejando detalles para el diseño detallado. Estas propiedades varían en función de lo
que un usuario espera de un objeto.
- La encapsulación, que permite ofrecer a los usuarios una visión de caja negra, de
forma que solo se exporte la interfaz de usuario. Esta aproximación, estrechamente
ligada con la ocultación de la información, permite empaquetar la funcionalidad de
un objeto, de forma que se pueda cambiar la funcionalidad interna si afectar a la
visión externa de un componente de un sistema.
- La ocultación de la información, un principio que consiste en no mostrar al
exterior los datos o las funciones que no sean necesarias. Un módulo bien
encapsulado que solo exporta la información necesaria se puede rediseñar
completamente sin afectar a su visión anterior.
Cuando se escriben los programas orientados a objetos es necesario definir primero las
clases. Mientras el programa esta en ejecución, se crean los objetos de estas clases
que van a llevar a cabo las tareas. Una tarea puede ser insertar un elemento en una
pila u ordenar los datos de los alumnos. En general una clase se define como una
estructura de datos y las operaciones que permiten operar con esa estructura de datos
(denominada método). Un método definido para una clase se denomina método de
clase, y un método definido para un objeto se denomina método de instancia. Los
métodos pueden recibir argumentos cuando se les llama. No se puede enviar un
Excelencia Académica
19
mensaje a una clase de objeto a menos que tenga un método para manejarlo. Enviar
un mensaje a una clase objeto es la forma de ejecutar el método correspondiente y si
no hay ningún método conforme, no ocurre nada (o mejor dicho, ocurrirá un error de
compilación).
El Lenguaje de Programación JAVA
El lenguaje de Programación Java surgió en los años 90 como un lenguaje orientado a
objetos sencillo, fácil de usar y muy bien adaptado para la programación de aplicaciones en
red. El lenguaje Java fue presentado oficialmente en Mayo de 1995.
Java permite crear o desarrollar programas de aplicación o aplicaciones que se ejecutan en
cualquier computadora que tenga la máquina virtual Java, y también permite crear applets
que son aplicaciones que se ejecutan en un navegador para aplicaciones en Internet.
Pasos para crear un programa en Java
- Aplicaciones
 Escribir el programa fuente en cualquier editor y guardarlo con extensión .java
 Compilar el fichero fuente mediante: javac miPrograma.java .Esto genera el fichero
.class
 Ejecutarlo (interpretar los byte-code) : java miPrograma
- Applets
 Escribir el programa fuente en cualquier editor y guardarlo con extensión .java
 Compilar el fichero fuente mediante: javac miProgramaApplet.java
 Escribir la pagina web que contendrá al applet y guardar el código con extensión
.html
 El código mínimo será:
<HTML>
<BODY>
<APPLET code="miProgramaApplet.class" width=400 height=400>
</APPLET>
</BODY>
</HTML>
Se tiene 2 posibilidades para ejecutar el applet:
- Lanzar un navegador y cargar la página html, o bien
- Usar el programa provisto por Sun para ver applets: appletviewer
miProgramaApplet.html
Excelencia Académica
20
Lo que no tiene Java a diferencia de C y C++ es:
a) No hay #define.
b) No hay definición de clases como estructuras.
c) No hay herencia múltiple.
d) No hay goto.
e) No hay apuntadores o punteros.
f ) No hay funciones. Java permite una programación orientada a objetos sin estilo
funcional o procedural. Lo que hace una función en C++ se hace en Java al definir una
clase y creando los métodos para dicha clase.
Debido a estas características, algunas personas definen a Java así:
Java = (C++) - C
Modelamiento de Problemas
Modelar un problema es encontrar las partes importantes del problema identificando la
salida o el resultado de la solución del problema.
Para modelar un problema, primero tiene que identificarse y/o definirse bien el problema.
Se dice que un problema esta bien definido cuando se ha identificado la situación inicial del
problema o el punto de partida inicial y la salida a la que se quiere llegar o solución del
problema. La situación a la que se quiere llegar es la respuesta que se debe obtener como
solución del problema y se define como SALIDA, mientras que la situación inicial que son
los datos necesarios para resolver el problema son los datos iniciales que van a llevarnos a
la solución y se define como ENTRADA.
Ejemplo
Se quiere construir una carpeta.
Este es el problema que se quiere resolver, para modelarlo preguntamos sobre la salida o
resultado:
Que se debe obtener como resultado?
Obviamente se necesita UNA CARPETA
Evaluamos los datos necesarios o ENTRADA para este problema preguntando:
Que necesitamos para construir la carpeta?
Se necesita madera, fierros, herramientas, pintura. Con todos estos elementos podemos
transformar esta entrada en la salida requerida que es la carpeta.
Excelencia Académica
21
2.1
Encuentra la Entrada y Salida de cada uno de los siguientes problemas. Determinar si esta
bien definido o no.
1.- Cual es la edad de Mario en años, meses y días.
Entrada Salida Bien Definido
Si No
2.- Encontrar el promedio de dos números.
Entrada Salida Bien Definido
Si No
3.- Encontrar el grado de alegría de una persona.
Entrada Salida Bien Definido
Si No
4.- Encontrar la velocidad con que camina una persona.
Entrada Salida Bien Definido
Si No
Componentes de una Solución
Una solución a un problema es la salida que se obtiene al modelar un problema, por lo
tanto a partir de los datos de Entrada se debe llegar a la Salida. Un programa escrito en
cualquier lenguaje de programación permite, a partir de los datos de entrada, llegar a la
solución generando los datos de salida.
Los pasos ordenados y sucesivos para llegar desde los datos de entrada a la solución o
datos de salida se llama algoritmo.
2.2
Determina la solución para los siguientes problemas:
1.- Llegar a la universidad desde la casa.
Entrada Salida Algoritmo
2.- Obtener el promedio de dos números
Entrada Salida Algoritmo
3.- Pintar mi habitación
Entrada Salida Algoritmo
Excelencia Académica
22
4.- Lavar el automóvil
Entrada Salida Algoritmo
Modelaje
Para modelar un problema se debe determinar la Salida requerida y a partir de ello
determinar los datos necesarios para llegar a esa solución (Entrada). Después se debe
traducir la entrada y salida a un modelo computacional.
Un modelo computacional consiste en identificar y detallar cada dato de tal manera que se
diferencie de los demás.
Características de los Datos
Los datos tienen cuatro características que identifican y diferencian de los demás. Estas
características son:
Valor : es la situación actual del dato que se almacena. Esta situación puede ser
cambiante durante la ejecución de programa o puede no cambiar nunca.
Clase : Existen dos clases de datos de acuerdo a su uso, las constantes y las variables.
Las constantes son las que no cambian de valor mientras que las variables pueden ir
cambiando de valor al ejecutar el programa.
Identificador : es el nombre que se le pone al dato. Debe ser único para no confundirlo
con otro dato. Cada lenguaje de programación define la forma que tienen sus
identificadores.
Tipo : Es la definición de los valores que puede representar el dato. Los tipos básicos más
comunes son entero, real, caracteres y otros.
Ejemplo:
Calcular el área de un cuadrado.
Solución:
La salida requerida es el área del cuadrado.
Identificador Tipo
Área real
La entrada necesaria es la medida del lado del cuadrado.
Identificador Tipo
Lado real
El algoritmo es multiplicar lado x lado y con ello obtenemos el área.
Especificación
Después de haber definido los datos necesarios para resolver un problema y a los cuales
hay que llegar, se deben determinar las restricciones para estos datos que son las
Excelencia Académica
23
limitaciones que se deben tener en cuenta para que no haya errores al momento de
ejecutar el programa, esta es la especificación del problema.
Ejemplo:
Dada las notas de un estudiante definir cuantas asignaturas desaprobó.
Se sabe que se desaprueba un curso cuando se obtiene un promedio final menor a once.
La especificación del dato de entrada que son las notas es que estas notas son datos
enteros cuyo valor mínimo es cero y el valor máximo que pueden tener es de veinte,
además al calcular los promedios se puede tener que la fracción de 0.5 o mayor se
redondea al entero superior.
2.3
Realiza el modelaje para determinar si un número es primo o no.
Refinamiento a Pasos
Para resolver un problema se debe determinar las condiciones de entradas y las
restricciones que tenemos para estas {PRE}, al igual que las condiciones de salida o el
resultado al que se debe llegar {POST}.
El algoritmo es una sucesión de pasos que permite llegar desde la entrada hasta la salida.
Entrada
Paso 1
Paso 2
Paso 3
. ALGORITMO
.
.
Paso n
Salida
Refinamiento a pasos es dejar claramente explicado el algoritmo tal que partiendo de la
situación inicial y siguiéndolo paso a paso se llegue a la salida. No siempre el refinamiento
a pasos o algoritmo de un problemas es la solución única.
El algoritmo que se logra, es uno de tal manera que cada paso no se pueda subdividir en
otros pasos más pequeños, si todavía algún paso puede sub dividirse, quiere decir que el
refinamiento a pasos no ha terminado.
Ejemplo:
Describir el algoritmo para PAGAR LA PENSION DE ENSEÑANZA
Solución:
Entrada {PRE} : Se esta en casa y se dispone del dinero para realizar el pago
1. Dirigirse a Caja de la universidad
Excelencia Académica
24
2. Reservar y esperar turno de pago
3. Llegado el turno realizar el pago
4. Recoger el recibo
5. Retornar a casa
Este algoritmo a pesar de solucionar el problema, todavía puede sub dividirse en otros
pasos más específicos, por ejemplo Como dirigirse a la universidad?, Como retornar a
casa?, Como realizar el pago?, Se recibe vuelto o no?, por lo tanto se puede refinar más
este algoritmo para dejarlo más entendible y se puede tener el siguiente algoritmo:
1. Salir de casa
2. Tomar el transporte que nos lleve a la universidad
3. Cuando llegamos a la universidad, bajar del carro
4. Si hay cola en Caja, ponerse a la cola y esperar
5. Al llegar a Caja entregar el código de alumno y el dinero
6. Recoger el recibo de pago y el vuelto si es que corresponde
7. Salir de la universidad
8. Dirigirse a tomar el transporte que nos lleve de regreso
9. Cuando llegamos, bajar del carro
10. Entrar a la casa
Si revisamos este algoritmo podemos, si se desea, refinarlo nuevamente.
2.4
En una hoja aparte, realiza el refinamiento a pasos para los siguientes problemas:
1) Lavar la ropa con una lavadora
2) Vestirse para ir al colegio
3) Pagar el recibo de teléfono.
4) Ver una película en DVD.
Pasos para el Refinamiento de Pasos
Para realizar el refinamiento a pasos se puede seguir lo siguiente:
1. Entender correctamente el problema: de donde se inicia y a donde se quiere llegar
2. Encontrar una posible serie de pasos para resolver el problema, dividiéndolo en
problemas más pequeños.
3. Verificar cada paso: para ver si se puede volver a dividir para hacerlo más simple o
explicarlo mejor. Si esto ocurre, incluir los nuevos pasos en donde corresponda en
forma ordenada.
4. Confirmar que al recorrer todos los pasos se llega de la entrada a la salida.
Excelencia Académica
25
Para que el refinamiento a pasos sea de manera formal, es necesario que a cada uno de
los pasos se le determine su Entrada y su Salida. Se notara que para pasos sucesivos, la
salida del paso previo será el entrada del paso siguiente.
- Los sistemas orientados a objetos tienen características adecuadas para expresar
la complejidad de un sistema, algunas de las cuales son: Adaptabilidad,
Reusabilidad y Mantenibilidad.
- El diseño orientado a objetos consiste en averiguar cuales son los objetos de un
sistema, las clases en que se pueden agrupar y las relaciones entre objetos.
- Un objeto es cualquier cosa tangible o intangible que se pueda imaginar, definida
frente al exterior mediante unos atributos y las operaciones que permiten modificar
dichos atributos. Cada objeto particular se obtiene como una especificación de una
entidad más general denominada clase.
- Java permite crear aplicaciones y applets.
- El modelaje consiste en encontrar los limites de un problema, es decir que
esperamos encontrar y que necesitamos para ello.
- Los problemas que podemos resolver son aquellos que se encuentran bien
definidos.
- Un problema bien definido es aquel que se le puede identificar claramente la
Entrada y la Salida.
- La solución a un problema bien definido esta conformada por la Entrada, el
Algoritmo y la Salida.
- El Algoritmo es la sucesión ordenada de pasos que parten de la Entrada y si se
siguen uno a uno, conducen a la salida.
Fco. Javier Ceballos Curso de Programación Java 2
Alfaomega-Rama, España 2,003 Segunda Edición
Luis Joyanes Aguilar Programación en Java
Prentice Hall, España
José Pérez Mayor Programación en Java Paso a Paso
Thomson, España 2,003
Deitel y Deitel Curso de Programación en Java
Prentice Hall, España, 1,995
Excelencia Académica
26
Habiendo descrito los principios de la programación orientada a objetos, en los siguientes
UNIDAD TEMÁTICAs estudiaremos la programación en Java.
Para modelar un problema, primero tiene que identificarse y/o definirse bien el problema.
Se dice que un problema esta bien definido cuando se ha identificado la situación inicial del
problema o el punto de partida inicial y la salida a la que se quiere llegar o solución del
problema.
La especificación es la definición de las restricciones para los datos que son las
limitaciones que se deben tener en cuenta para que no haya errores al momento de
ejecutar el programa.
El algoritmo es la sucesión ordenada de pasos que se tienen que seguir para llegar a partir
de los datos de entrada hasta los datos de salida requeridos.
Identifica en forma clara las entradas, salidas y algoritmo para un problema realizando en
forma correcta su modelo computacional.
Define en forma clara las características de la programación orientada a objetos.
Define las características del lenguaje Java.
Excelencia Académica
27
Nº 2
Nombre__________________________________________________________________
Apellidos_______________________________________Fecha _____________________
Ciudad ______________________________Semestre_____________________________
1.- Defina los siguientes enunciados :
a) Algoritmo
b) Modelaje
c) Problema bien definido
2.- Definir las entradas y salidas para los siguientes problemas :
a) Determinar el mayor de dos números
Entrada Salida Algoritmo
b) Calcular el promedio de los n primeros números
Entrada Salida Algoritmo
c) Escoger los números pares de una lista de números enteros
Entrada Salida Algoritmo
3.- Describir las características de la programación orientada a objetos.
4.- Describir las ventajas de UML.
5.- Describir con ejemplos las características de los datos.
Excelencia Académica
28
Excelencia Académica
29
ESTRUCTURA DE UN PROGRAMA
ORIENTADO A OBJETOS
En lenguaje Java, como en los otros lenguajes de programación, los programas tienen una
estructura definida que siempre debe respetarse.
Un programa simple en Java que solamente muestre en pantalla un saludo al programador
sería el siguiente:
/** Este es primer programa en Java
* Imprime la palabra HOLA AMIGOS por la pantalla
**/
import java.*;
/* La clase principal se denomina ProgramaUno */
public class ProgramaUno
{ public static void main(String args[])
{ // Parte que se ejecuta del programa para mostrar el mensaje
System.out.println(“HOLA AMIGO”);
La primera parte del ProgramaUno se compone de tres elementos: comentarios, sentencia
import y declaración de clases. Estos tres componentes se incluyen siempre en todos los
programas de Java.
Se puede escribir un programa Java que incluya una única declaración de clase, pero eso
no es normal. Vamos a explicar los tres componentes y sus sub componentes.
Gramática de Java
Comentarios
Los comentarios son textos que se ponen en el programa para documentar las
instrucciones con la finalidad de hacer más entendible el programa. Los comentarios solo
se tienen en el código fuente y no son tomados en cuenta al momento de realizar la
compilación del programa.
En Java hay tres tipos de comentarios:
Excelencia Académica
30
Los dos primeros tipos de comentarios son los que todo programador conoce y se utilizan
del mismo modo. Los comentarios de documentación, colocados inmediatamente antes de
una declaración (de variable o función), indican que ese comentario ha de ser colocado en
la documentación que se genera automáticamente cuando se utiliza la herramienta de
Java, javadoc. Dichos comentarios sirven como descripción del elemento declarado
permitiendo generar una documentación de nuestras clases escrita al mismo tiempo que se
genera el código.
Identificadores
Los identificadores nombran variables, funciones, clases y objetos; cualquier cosa que el
programador necesite identificar o usar.
En Java, un identificador comienza con una letra, un subrayado (_) o un símbolo de dólar
($). Los siguientes caracteres pueden ser letras o dígitos. Se distinguen las mayúsculas de
las minúsculas y no hay longitud máxima.
Ejemplos de identificadores válidos:
Identificador
nombre_usuario
Nombre_Usuario
_variable_de_sistema
$transaccion
y su uso sería, por ejemplo:
int contador_principal;
char _lista_de_ficheros;
float cantidad_en_Ptas;
// comentarios para una sola línea
/* comentarios de una o
más líneas
*/
/** comentario de documentación, de una o más líneas
*/
Excelencia Académica
31
Palabras Reservadas
Las siguientes son las palabras clave que están definidas en Java y que no se pueden
utilizar como identificadores, estas palabras sirven para realizar o construir instrucciones y
son las siguientes:
abstact Boolean break byte case
catch char class continue default
do double else extends false
final Finally float for if
implements import instanceof int interface
long native new null package
private protected public return short
static super switch syncroniced this
throw throws transient try void
volatile while
Importación de Clases
Los programas orientados a objetos se desarrollan mediante el uso de clases predefinidas
siempre que sea posible. Únicamente se deben incluir clases propias cuando no hayan
clases predefinidas adecuadas. En Java las clases se agrupan en clases. Un paquete
puede incluir sub paquetes, definiendo una jerarquía de paquetes. Para usar los elementos
de un paquete dentro de un programa se puede escribir su nombre completo., pero el
problema es que se debe usar un punto para separar los nombres de los paquetes lo que
puede resultar muy engorroso. Por ejemplo se escribe:
java.InputStream.read
Con una sentencia import al principio del programa elimina la necesidad de usar los
nombres completos, por lo que si se pone en el principio del programa:
import java.InputStream;
Para referirse al método se puede usar simplemente:
read;
El principal problema que genera el uso de la sentencia import es la ambigüedad que se
origina cuando dos métodos tienen el mismo nombre pero pertenecen a clases distintas por
lo que el entorno de programación no sabrá a cual método llamar y llamara a cualquiera de
ellos, esto se evita usando los nombres completos.
Excelencia Académica
32
Declaración de Clases y Métodos
Todo programa Java debe tener al menos una clase: la clase principal. En el ejemplo la
clase principal es ProgramaUno. Si se designa una clase como clase principal, entonces se
debe definir un método denominado main, porque, cuando se ejecuta el programa Java, se
ejecuta primero el método main de la clase principal.
La declaración de una clase se realiza usando la palabra reservada class mediante la
sentencia:
public class ProgramaUno
la palabra reservada public indica que esa clase se exporta al exterior. ProgramaUno es el
nombre de la clase principal y por extensión de la aplicación por lo que cuando se guarda
este programa debe guardarse con el nombre ProgramaUno.java
La sintaxis para la declaración de un método es:
<modificadores><tipo devuelto><nombre del método> (<parámetros>)
{
<cuerpo del método>
}
Donde <modificadores> es una secuencia de términos para designar diferentes tipos de
métodos; <tipo devuelto> es el tipo de valor de datos que devuelve el método; <nombre del
método> es el nombre del método; <parámetros> es una secuencia de valores que se
pasan al método, y <cuerpo del método> es una secuencia de instrucciones. La
declaración del método main cumple con este formato:
public static void main (String[] args)
{
…
}
El método main llama a otro método que es el que escribe en la pantalla el mensaje, este
método es:
System.out.println(“HOLA AMIGOS”);
El IDE de JAVA
EL IDE (Entorno Integrado de Desarrollo) es una herramienta que permite elaborar los
programas, compilarlos y ejecutarlos mediante el uso de comandos sencillos. Tiene
incorporado un procesador de textos para escribir los programas para después compilar y
ejecutar. Existen varios IDE que se pueden usar con Java entre ellos tenemos el Jcreator,
Eclipse y otros. Vamos a describir en forma rápida los comandos más importantes del
JCreator. Para ingresar se hace doble click en el icono del JCreator y se obtendrá la
siguiente pantalla:
Excelencia Académica
33
Para escribir un programa se debe crear un archivo nuevo, para ello se ejecuta los
comandos File, New, File y se mostrara la siguiente pantalla:
Se selecciona el tipo de programa que se va a construir, en nuestro caso se debe
seleccionar Java File y hacer clic en Next y se mostrara la ventana para escribir el nombre
del programa y después se selecciona el directorio en donde se guardara el archivo (para
realizar esta selección se hace clic en los tres puntos del lado derecho y se busca el
directorio deseado que en nuestro caso será el directorio ejemplo)
Para terminar se hace clic en el botón Finish y se abrirá la ventana de texto al lado derecho
en donde se puede escribir el programa.
Excelencia Académica
34
Se escribe el programa y se compila con los comandos Build, Compile File. Si es la primera
vez se tendrá que definir el directorio donde se encuentra el compilador de Java que por lo
general estará en la raíz del disco C: en el directorio j2sdk1.4.2_03
Si existen errores, estos se mostraran en la ventana de la parte inferior con la indicación de
la línea en donde existe el error y cuando todos los errores se hayan corregido se realizará
la compilación mostrando el mensaje Process Completed en la venta inferior
Después de haber compilado el programa, debemos ejecutarlo, lo que se hace con los
comandos Build, Execute File y aparecerá una ventana con la ejecución del programa para
realizar el ingreso de datos y la salida de los resultados como se muestra
Excelencia Académica
35
Si el programa se ha compilado y ejecutado, también se habrá guardado en el disco. Para
guardar el programa en un archivo con otro nombre se selecciona los comandos File, Save
As y se presentará una ventana para poner el nombre y guardar y se termina de guardar
haciendo clic en el botón Save.
Para recuperar un programa guardado en el disco se selecciona los comandos File, Open y
de la ventana que aparece se selecciona el nombre del archivo deseado y se termina
haciendo clic en el botón Open
Para cerrar la ventana de edición en donde se encuentra un programa se ejecuta los
comandos File, Close.
Tipos de Datos en Java
Todo lenguaje de programación maneja tipos de datos respecto a lo que representa, por lo
general se tienen datos numéricos, datos tipo carácter y datos tipo cadena.
Los datos numéricos representan cantidades y con ellos se pueden realizar operaciones
matemáticas. Son todos los números, por ejemplo 345, 65.38, -78, -8.37
Excelencia Académica
36
Los datos tipo carácter sirven para representar un solo símbolos (letras, dígitos, signos de
puntuación, etc.) y van entre apóstrofos o comillas simples, como por ejemplo ‘a’, ‘F’, ‘5’, ‘.’,
etc. Los apóstrofos no son parte del carácter. Para poder escribir caracteres especiales se
antepone el  como por ejemplo ‘”’ para tener las comillas, las secuencias de caracteres
especiales son las siguientes:
Secuencia Significado
n Nueva línea
t Tabulador horizontal
b Retroceso
r Retorno de carro
f Alimentación de forma
 Diagonal inversa
' Comilla sencilla
" Comillas dobles
ddd Valor en Octal
xdd Valor en Hexadecimal
udddd Únicode
Las cadenas de texto son una secuencia de caracteres que van limitados por comillas, pero
las comillas solo son delimitadores y no forman parte de la cadena. Son cadenas de texto,
por ejemplo:
“Hola amigos” “Ingrese un número entero”
“La suma de los números es:” “352.564”
“Vamos a sumar 5 con 43”
Los tipos de datos disponibles en Java son :
Tipo bytes Tipo Datos Rango (positivo) Literal
byte 1 Entero 127 14
short 2 Entero 32767 14
int 4 Entero 2.147.483.647 14
Excelencia Académica
37
long 8 Entero 9.233e15 14
float 4 Coma flotante 1.4e-45 a 3.4e38 36,6
double 8 Coma flotante 4.9e-324 a 1.7e308 3,14e2
char 2 Caracter Únicode 'a' o 064
boolean 1 Booleano true o false true o false
El tipo String es un tipo especial de Java que permite el ingreso y manejo de cadenas de
texto.
Declaración de Datos
Para manejar estos datos se usan variables las cuales deben ser declaradas al inicio del
programa. Las variables serán representadas por medio de identificadores y la declaración
de variables se realiza de la siguiente forma:
tipo_de_dato identificador;
Se pueden declarar varias variables y asignarles un valor inicial de la siguiente forma:
tipo_de_dato identificador1, identificador 2,…;
tipo_de_dato identificador = valor;
Por ejemplo son declaraciones validas las siguientes:
int a: int x,y,z;
int E=45; flotat X=4.56, M=0.45;
char V, R==’D’; bolean T;
String CAD=”Este es un mensaje de texto” ;
Instrucciones en JAVA
Las instrucciones son las órdenes que se la da a la computadora para que realicen alguna
acción. En Java las instrucciones siempre finalizan con un punto y coma.
Instrucción ;
Se pueden tener instrucciones compuestas o bloques de instrucciones que se deben
manejar como una única instrucción, en este caso el bloque de instrucciones comienza con
una { y termina con otra }.
{ instruccion1;
Excelencia Académica
38
Instrucción 2;
.
.
Instrucción n;
}
Operadores Aritméticos
Los operadores aritméticos permiten realizar operaciones aritméticas entre dos datos que
pueden ser literales o pueden estar representados por variables. Existen operadores
monarios que son aquellos que se aplican a un solo dato, pero también existen operadores
llamados binarios porque se aplican a dos datos.
Los operadores de comparación se utilizan para comparar dos valores y generan un
resultado de tipo lógico que puede ser VERDADERO o FALSO y se utilizan para formar las
condiciones o controlar la ejecución de ciclos repetitivos.
Los operadores en Java son los siguientes:
Operadores Unarios:
Operador
Descripción (prefija) Operador Descripción (pre o
posfija)
+ Convierte el dato a int ++ Incrementa el dato en 1
-
Negacion aritmética
oper.
-- Decrementa el dato en 1
Operadores aritméticos (binarios):
Operador Uso Atajo Descripción
+ op1 + op2 op1 += op2 Suma op1 y op2
- op1 - op2 op1 -= op2 Resta op2 de op1
* op1 * op2
op1 *= op2 Multiplica op1 por
op2
/ op1 / op2 op1 /= op2 Divide op1 por op2
% op1 % op2 op1 %= op2 Resto de op1 / op2
El atajo es una operación que asigna el resultado de la operación al mismo operador1.
Excelencia Académica
39
Por ejemplo si se tienen las variables A que tiene un valor de 15 y una variable B que tiene
el valor de 3 se tiene lo siguiente:
A + B será 18, los valores de A y B no
cambian
A * B será 45, los valores de A y B no
cambian
A += B hará que A valga 18 A * B hará que A valga 45
Operadores de comparación (binarios):
Operador Uso Devuelve verdadero si
> op1 > op2 op1 es mayor que op2
>= op1 >= op2 op1 es mayor o igual que op2
< op1 < op2 op1 es menor que op2
<= op1 <= op2 op1 es menor o igual que op2
== op1 == op2 op1 y op2 son iguales
!= op1 != op2 op1 y op2 son distintos
&& op1 && op2 AND, condicionalmente evalúa op2
& op1 & op2 AND, siempre evalúa op1 y op2
|| op1 || op2 OR, condicionalmente evalúa op2
| op1 | op2 OR, siempre evalúa op1 y op2
! ! op op es falso
A > B será VERDADERO A < B será FALSO
Operadores de bit (binarios):
Operador Uso Operación
>> op1 >> op2 Desplaza los bits de op1 a la derecha op2 veces
<< op1 << op2 Desplaza los bits de op1 a la izquierda op2 veces
>>> op1 >>> op2
Desplaza los bits de op1 a la derecha op2 veces
(sin signo)
& op1 & op2 AND
| op1 | op2 OR
^ op1 ^ op2 "XOR"
~ ~op2 Complemento
Excelencia Académica
40
Operador terciario:
expresion ? sentencia_si : sentencia_si_no
Precedencia de operadores:
Tipo de operadores Operadores de este tipo
Operadores posfijos [ ] . (parametros) expr++ expr--
Operadores unarios ++expr --expr +expr -expr ~ !
Creación o conversión new (tipo) expr
Multiplicación * / %
Suma + -
Desplazamiento <<
Comparación <<= = instanceof
Igualdad == !=
AND a nivel de bit &
OR a nivel de bit ^
XOR a nivel de bit |
AND lógico &&
OR lógico ||
Condiciónal ? :
Asignación = += -= *= /= %= &= ^= |= <<= = =
Instrucciones de Salida de Datos en JAVA
Las instrucciones de salida de datos sirven para mostrar datos por los dispositivos de
salida de datos. En esta parte trataremos solamente la salida de datos a través del monitor
de video.
Java trata a todos los datos para la salida como si fueran cadenas que pueden
concatenarse por medio del signo + que nos va a permitir combinar en la salida datos
numéricos, caracteres y cadenas de texto.
El método para la salida de datos es:
System.out.print(datos_de_salida);
Por ejemplo para mostrar el valor del número representado por la variable A se pone:
Excelencia Académica
41
System.out.print(“El valor de la variables A es “ + A );
El método println es similar a print solamente que después de imprimir el dato hace un
cambio a la linea siguiente:
System.out.println(“El valor de la variable A es “ + A) ;
Instrucciones de Entrada de Datos en JAVA
La entrada de datos en Java se maneja como el ingreso de un flujo de datos desde una
fuente, en este caso la fuente del flujo de datos será el teclado, aunque puede ser cualquier
otro archivo.
Normalmente Java permite el ingreso de un flujo de caracteres, que seria una cadena de
texto, la que debe ser convertida para representar el dato numérico requerido.
El flujo de datos de entrada se declara de la siguiente forma:
InputStreamReader isr=new InputStreamReader(System.in);
BufferedReader e=new BufferedReader(isr);
Donde e es la variable que va a representar el flujo de datos de entrada, otra forma más
corta en una sola instrucción es:
BufferedReader e=new BufferedReader (new InputStreamReader(System.in));
Cuando el programa va a realizar ingreso de datos se debe preveer que no se produzcan
errors durante este ingreso, esto se realice a través del manejo de excepciones que se
tratara posteriormente. Para manejar las
excepciones se debe poner al final de la declaración main las palabras: throws IOException
siendo la declaración completa de la siguiente forma:
public static void main(String[] args) throws IOException
Los métodos para el ingreso de datos, considerando las declaraciones anteriores que usan
la variable e para el flujo de entrada, son los siguientes:
var=System.in.read(); // para el ingreso de números enteros
var_byte=Byte.parseByte(e.readLine()); para el ingreso de datosbyte
var_short=Short.parseShort(e.readLine()); para el ingreso de datos short
var_int=Integer.parseInt(e.readLine()); para el ingrso de datos int
var_long=Long.parseLong(e.readLine()); para el ingreso de datos long
var_float=Float.parseFloat(e.readLine()); para el ingreso de datos float
var_double=Double.parseDouble(e.readLine()); para ingreso de datos double
var_String=e.readLine(); para el ingreso de cadenas de texto
Traducción del Modelaje y Especificación a un Programa JAVA
Excelencia Académica
42
Consiste en realizar todo el modelaje y especificación de datos para llegar desde la entrada
hasta la salida y llevar este algoritmo a código Java para ejecutar el programa.
EJEMPLO 1
Por ejemplo se requiere tener un programa para sumar dos números enteros que se
ingresen por teclado y mostrar la suma. Se tendrá lo siguiente:
Datos de Salida : La asuma los dos números ingresados, representado por la
variable S.
Datos de Entrada : Dos números enteros representados por dos variables de tipo int
(variables A y B) cuyo valor se ingresara desde el teclado al
momento de ejecutar el programa
Algoritmo de Solución:
- Ingresar número A
- Ingresar número B
- Sumar ambos números : S= A + B
- Mostrar el valor de S, que es la suma, por la pantalla
El código del programa será el siguiente:
// Ingreso de dos números y mostrar la suma
import java.io.*;
public class suma {
public static void main(String[] args) throws IOException
{ // se declara el flujo de entrada de caracteres para la variable e
InputStreamReader isr=new InputStreamReader(System.in);
BufferedReader e=new BufferedReader(isr);
int A,B,S; //se declaran las variables
// Ingreso de los dos números
System.out.print("Ingresar un número entero ");
A=Integer.parseInt(e.readLine());
System.out.print("Ingresar otro número entero ");
B=Integer.parseInt(e.readLine());
// Se calcula la suma de los números
S = A + B ;
Excelencia Académica
43
// Se muestra la suma por pantalla
System.out.println("La suma de los dos números es : "+S);
EJEMPLO 2
Escribir un programa y su modelo para ingresar los diferentes tipos de datos de Java y
después mostrarlos por pantalla, también mostrar la suma de todos los números
ingresados.
Vamos a dejar como tarea para el estudiante el modelaje de este problema y se muestra a
continuación el código del programa.
//Ejemplo de ingreso de números, cadenas
import java.io.*;
public class números {
public static void main(String[] args) throws IOException
{
// se declara el flujo de entrada de caracteres para la variable e
InputStreamReader isr=new InputStreamReader(System.in);
BufferedReader e=new BufferedReader(isr);
// esta es otra forma de declarar el flujo de entrada de caracteres
// BufferedReader e=new BufferedReader (new InputStreamReader(System.in));
byte b;
short s;
int i;
long l;
float f;
double d,suma; //la suma debe ser tipo double
String ca;
System.out.print("Ingresar un entero byte ");
b=Byte.parseByte(e.readLine());
System.out.print("Ingresar un entero short ");
s=Short.parseShort(e.readLine());
System.out.print("Ingresar un entero int ");
i=Integer.parseInt(e.readLine());
System.out.print("Ingresar un entero long ");
l=Long.parseLong(e.readLine());
Excelencia Académica
44
System.out.print("Ingresar un real float ");
f=Float.parseFloat(e.readLine());
System.out.print("Ingresar un real double ");
d=Double.parseDouble(e.readLine());
System.out.print("Ingresar una cadena de texto ");
ca=e.readLine();
System.out.println("El entero byte es "+b);
System.out.println("El entero short es "+s);
System.out.println("El entero int es "+i);
System.out.println("El entero long es "+l);
System.out.println("El float es "+f);
System.out.println("El double es "+d);
System.out.println("La cadena es "+ca);
suma=b+s+i+l+f+d;
System.out.println("La suma de todos es "+suma);
}
En lenguaje Java, como en los otros lenguajes de programación, los programas tienen una
estructura definida que siempre debe respetarse.
La gramática de Java está formada por comentarios, identificadores, palabras reservadas,
importación de clases, declaración de clases y métodos.
Todo programa Java debe tener al menos una clase: la clase principal. Si se designa una
clase como clase principal, entonces se debe definir un método denominado main, porque,
cuando se ejecuta el programa Java, se ejecuta primero el método main de la clase
principal.
EL IDE (Entorno Integrado de Desarrollo) es una herramienta que permite elaborar los
programas, compilarlos y ejecutarlos mediante el uso de comandos sencillos. Tiene
incorporado un procesador de textos para escribir los programas para después compilar y
ejecutar. Las características de su instalación se describen en el apéndice I y II.
Los datos numéricos representan cantidades y con ellos se pueden realizar operaciones
matemáticas. Son todos los números, por ejemplo 345, 65.38, -78, -8.37
Los datos tipo carácter sirven para representar un solo símbolo (letras, dígitos, signos de
puntuación, etc.) y van entre apóstrofos o comillas simples, como por ejemplo ‘a’, ‘F’, ‘5’, ‘.’,
etc. Los apóstrofos no son parte del carácter. Para poder escribir caracteres especiales se
antepone el  como por ejemplo ‘”’ para tener las comillas.
Excelencia Académica
45
Las cadenas de texto son una secuencia de caracter
es que van limitados por comillas, pero las comillas solo son delimitadores y no forman
parte de la cadena.
Todo dato, representado por una variable, que se utilice en un programa debe ser
declarado indicando el tipo de dato que representa y el identificador que lo representará.
Java, como los otros lenguajes, trata a las unidades de entrada y salida como elementos
que generan flujo de datos o caracteres y a quienes también se les entrega un flujo de
caracteres.
Fco. Javier Ceballos Curso de Programación Java 2
Alfaomega-Rama, España 2,003 Segunda Edición
Luis Joyanes Aguilar Programación en Java
Prentice Hall, España
José Pérez Mayor Programación en Java Paso a Paso
Thomson, España 2,003
Deitel y Deitel Curso de Programación en Java
Prentice Hall, España, 1,995
Habiendo estudiado la estructura de un programa en Java, sus instrucciones y sus
operadores en los siguientes UNIDAD TEMÁTICAS se tratará sobre la utilización de estas
instrucciones en el taller de programación.
Todo dato que se utilice en un programa Java y que se represente con una variable, debe
ser declarado indicando su tipo de dato y el identificador que lo representará.
Todo programa Java debe tener la declaración de una clase principal que debe llevar el
mismo nombre que tiene el archivo que guarda el programa con extensión .java y después
debe tener una clase de nombre main que es la primera clase que se va a ejecutar.
Excelencia Académica
46
Escribir programas con entrada y salida de datos en forma correcta.
Utilizar los operadores aritméticos para construir programas que requieran realizar estas
operaciones.
Nº 3
Nombre__________________________________________________________________
Apellidos_______________________________________Fecha _____________________
Ciudad ______________________________Semestre_____________________________
1.- Escribir un programa, identificando su salida, entrada (con sus restricciones) y algoritmo
para calcular:
a) el área y perímetro de un rectángulo.
b) el área lateral y volumen de un cilindro.
c) el área lateral y volumen de una esfera.
d) el costo de una factura donde se ingresa el precio unitario del producto, su nombre y
la cantidad comprada considerando el sub total, el IGV (19%= y el total que es la
suma del sub total y del IGV.
Excelencia Académica
47
TALLER DE PROGRAMACIÓN I
(Entrada, Salida, Operadores)
En esta parte del curso vamos a desarrollar programas de entrada y salida de datos y
vamos a plantear otros para el desarrollo por parte del estudiante. Tenemos los siguientes
ejemplos:
EJEMPLO1
Escribir un programa que solicite un texto que se ingrese por teclado y que después
muestre por pantalla el texto ingresado.
* Created on 05/04/2005
* To change the template for this generated file go to
* Window&gt;Preferences&gt;Java&gt;Code Generation&gt;Code and Comments
*/
/**
* @author Administrador
*
* To change the template for this generated type comment go to
* Window&gt;Preferences&gt;Java&gt;Code Generation&gt;Code and Comments
*/
import avail.*;
public class Entrada1
{
public static void main(String[] args) throws IOException
{
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader flujoE = new BufferedReader(isr);
PrintStream flujoS = System.out;
String sdato;
try
{
Excelencia Académica
48
flujoS.print("Introduzca un texto: ");
sdato = flujoE.readLine();
System.out.print("El texto ingresado es : ");
flujoS.println(sdato);
}
catch (IOException ignorada){}
}
}
Al compilar y ejecutar el programa se debe ingresar un texto terminando presionando la
tecla Enter y se vera que el programa escribe en pantalla el texto ingresado.
EJEMPLO 2
Escribir un programa para ingresar un dato y leer el dato usando el método
System.in.read();
import java.io.*;
public class Entrada2 {
public static void main(String[] args) throws IOException {
int n,m;
byte b;
float x,y=4;
char ca;
System.out.println("Ingrese un dato");
n=System.in.read();
System.out.println("el valor de ingresado es "+(char)n+"ningrese otro dato");
m=System.in.read();
System.out.println("el otro dato ingresado es "+m);
System.out.println("Ingrese un caracter");
ca=(char)System.in.read();
System.out.println("El caracter ingresado es "+ca);
}
}
Al ejecutar el programa si se ingresa el texto CAMINAR y se termina presionando Enter, se
tiene la siguiente salida:
Excelencia Académica
49
Como se nota aparece la C después el 65 y al final la letra M
EXPLICACION
El método System.in.read() permite el ingreso de un carácter y almacena en la variable
asociada a este método sin necesidad de presionar Enter para concluir el ingreso. El valor
que se almacena es un número que corresponde al código ASCII del carácter ingresado.
Los demás caracteres que se hayan ingresado permanecen en la memoria intermedia del
teclado y cuando se encuentra otro método de lectura de carácter se asigna el código del
siguiente carácter a la variable asociada al método y así sucesivamente por lo que el
código de la letra C se asigna al primer System.in.read() el código de la letra A al segundo
y el código de la letra M al tercero, los demás caracteres se pierden incluyendo el Enter
(carácter 13) final.
Se debe notar que el método System.in.read() permite el ingreso de un dato numérico que
es el código ASCII del carácter ingresado y si este dato numérico se debe mostrar como
carácter como en la primera salida de datos, se debe convertir con una operación cast que
consiste en anteponer el tipo deseado entre paréntesis antes del dato a convertir, en este
caso se puso (char)n para convertir el entero n a carácter.
Lo mismo se hace si se desea ingresar caracteres usando este método, como en el tercer
ingreso de datos, se lee un número pero con el operador cast este número leído se
convierte en carácter y es asignado a una variable de carácter como en la instrucción:
ca=(char)System.in.read();
La Clase Math
La clase Math representa la librería matemática de Java. Las funciones que contiene son
las que todos los lenguajes tienen, por eso se encapsulan en Math, y lo mismo sucede con
las demás clases que corresponden a objetos que tienen un tipo equivalente (Character,
Float, etc.). El constructor de la clase es privado, por los que no se pueden crear instancias
de la clase. Sin embargo, Math es public para que se pueda llamar desde cualquier sitio y
static para que no haya que inicializarla.
Excelencia Académica
50
Funciones Matemáticas
Si se importa la clase, se tiene acceso al conjunto de funciones matemáticas estándar que
son los siguientes:
Math.abs( x ) para int, long, float y double, devuelve el
valor absolute
Math.sin( double a ) devuelve el seno del ángulo a en
radianes
Math.cos( double a ) devuelve el coseno del ángulo a en
radianes
Math.tan( double a ) devuelve la tangente del ángulo a en
radianes
Math.asin( double r ) devuelve el ángulo cuyo seno es r
Math.acos( double r ) devuelve el ángulo cuyo coseno es r
Math.atan( double r ) devuelve el ángulo cuya tangente es r
Math.atan2(double a,double b) devuelve el ángulo cuya tangente es a/b
Math.exp( double x ) devuelve e elevado a x
Math.log( double x ) devuelve el logaritmo natural de x
Math.sqrt( double x ) devuelve la raíz cuadrada de x
Math.ceil( double a ) devuelve el número completo más
pequeño mayor o igual que a
Math.floor( double a ) devuelve el número completo más grande
menor o igual que a
Math.rint( double a ) devuelve el valor double truncado de a
Math.pow( double x,double y ) devuelve y elevado a x
Math.round( x ) para double y float
Math.random() devuelve un double
Math.max( a,b ) para int, long, float y double
Math.min( a,b ) para int, long, float y double
Math.E para la base exponencial,
aproximadamente 2.72
Math.PI para PI, aproximadamente 3.14
A continuación se muestran algunos ejemplos de utilización de estas funciones:
int i = 7;
int j = -9;
double x = 72.3543;
double y = 0.3498;
Excelencia Académica
51
System.out.println("i es " + i);
System.out.println("j es " + j);
System.out.println("x es " + x);
System.out.println("y es " + y);
// Valor absoluto de un número
System.out.println("|" + i + "| es " + Math.abs(i));
System.out.println("|" + j + "| es " + Math.abs(j));
System.out.println("|" + x + "| es " + Math.abs(x));
System.out.println("|" + y + "| es " + Math.abs(y));
// aproximación decimal
//empleando (round)
System.out.println(x + " es " + Math.round(x));
System.out.println(y + " es " + Math.round(y));
System.out.println(x + " es aprox." + (double)Math.round(x*100)/100);
System.out.println(y + " es aprox." + (double)Math.round(y*100)/100);
//empleando floor
System.out.println("The floor of " + x + " es " + (100*Math.floor(x))/100);
System.out.println("The floor of " + y + " es " + (100*Math.floor(y))/100);
// para hallar el menor de dos número
System.out.println("min(" + i + "," + j + ") es " + Math.min(i,j));
System.out.println("min(" + x + "," + y + ") es " + Math.min(x,y));
// Para hallar el mayor de dos números
System.out.println("max(" + i + "," + j + ") es " + Math.max(i,j));
System.out.println("max(" + x + "," + y + ") es " + Math.max(x,y));
// las constantes PI y E
System.out.println("Pi es " + Math.PI);
System.out.println("e es " + Math.E);
//funciones trigonométricas
double angulo = 45.0 * Math.PI/180.0;
System.out.println("cos(" + angulo + ") es " + Math.cos(angulo));
System.out.println("sin(" + angulo + ") es " + Math.sin(angulo));
System.out.println("tan(" + angulo + ") es " + Math.tan(angulo));
Excelencia Académica
52
// Funciones trigonomértricas inversas
double valor = 0.707;
System.out.println("acos(" + valor + ") es " + Math.acos(valor));
System.out.println("asin(" + valor + ") es " + Math.asin(valor));
System.out.println("atan(" + valor + ") es " + Math.atan(valor));
y=6.2; //ordenada
x=-5.4; //abscisa
System.out.println("atan2(" + y+" , "+x + ") es " + Math.atan2(y, x));
//Funciones exponencial y logarítmica
System.out.println("exp(1.0) es " + Math.exp(1.0));
System.out.println("exp(10.0) es " + Math.exp(10.0));
System.out.println("exp(0.0) es " + Math.exp(0.0));
System.out.println("log(1.0) es " + Math.log(1.0));
System.out.println("log(10.0) es " + Math.log(10.0));
System.out.println("log(Math.E) es " + Math.log(Math.E));
// pow(x,y) devuelve x elevado a y.
System.out.println("pow(2.0, 2.0) es " + Math.pow(2.0,2.0));
System.out.println("pow(10.0, 3.5) es " + Math.pow(10.0,3.5));
System.out.println("pow(8, -1) es " + Math.pow(8,-1));
// sqrt(x) devuelve la raíz cuadrada de x.
System.out.println("La raíz cuadrada de " + y + " es " + Math.sqrt(y));
// Devuelve un número pseudo-aleatorio comprendido entre 0.0 y 1.0
System.out.println("Número aleatorio: " + Math.random());
System.out.println("Otro número aleatorio: " + Math.random());
El ejemplo javamath.java, muestra la utilización de algunas de las funciones de la clase
Math:
class javamath {
public static void main( String args[] ) {
int x;
double rand,y,z;
float max;
rand = Math.random();
x = Math.abs( -123 );
y = Math.round( 123.567 );
z = Math.pow( 2,4 );
max = Math.max( (float)1e10,(float)3e9 );
Excelencia Académica
53
System.out.println( rand );
System.out.println( x );
System.out.println( y );
System.out.println( z );
System.out.println( max );
}
La Clase Carácter
Al trabajar con caracteres se necesitan muchas funciones de comprobación y traslación.
Estas funciones están en la clase Character. De esta clase sí que se pueden crear
instancias, al contrario que sucede con la clase Math.
Declaraciones
La primera sentencia creará una variable carácter y la segunda un objeto Character:
char c;
Character C;
Comprobaciones booleanas
Character.isLowerCase( char ) devuelve true si el carácter es una letra
minúscula
Character.isUpperCase( char ) devuelve true si el carácter es una letra
mayúscula
Character.isDigit( char ) devuelve true para caracteres numéricos
Character.isSpace( char ) devuelve true para espacios en blanco
En este caso, si tuviésemos un objeto Character C , no se podría hacer C.isLowerCase(),
porque no se ha hecho un new de Character. Estas funciones son estáticas y no conocen
al objeto, por eso hay que crearlo antes.
Traslaciones de Caracteres
Character.toLowerCase( char ) convierte entre mayúscula y minúscula
Character.toUpperCase( char ) convierte entre minúscula y mayúscula
Traslaciones de carácter/dígito
int i = Character.digit( c,base );
char c = Character.forDigit( i,base );
Métodos de la clase Character
C = new Character( 'J' );
char c = C.charValue();
String s = C.toString();
Excelencia Académica
54
La Clase Float
Cada tipo numérico tiene su propia clase de objetos. Así el tipo float tiene el objeto Float.
De la misma forma que con la clase Character, se han codificado muchas funciones útiles
dentro de los métodos de la clase Float.
Declaraciones
La primera sentencia creará una variable float y la segunda un objeto Float:
float f;
Float F;
Valores de Float
Float.POSITIVE_INFINITY
Float.NEGATIVE_INFINITY
Float.NaN
Float.MAX_VALUE
Float.MIN_VALUE
Conversiones de Clase/Cadena
String s = Float.toString( f );
f = Float.valueOf( "3.14" );
Comprobaciones
boolean b = Float.isNaN( f );
boolean b = Float.isInfinite( f );
Conversiones de Objetos
Float F = new Float( Float.PI );
String s = F.toString();
int i = F.intValue();
long l = F.longValue();
float F = F.floatValue();
double d = F.doubleValue();
La Clase Double
Cada tipo numérico tiene su propia clase de objetos. Así el tipo double tiene el objeto
Double. De la misma forma que con la clase Character, se han codificado muchas
funciones útiles dentro de los métodos de la clase Double. La clase Double tiene un
constructor para inicializarla con un valor double o, lo que es muy práctico, con una
representación tipo String del valor. El programa javaDouble.java, demuestra la creación de
una clase Double pasando un valor double y también pasando una cadena que se puede
interpretar como double.
class javaDouble {
public static void main( String args[] ) {
Double d1 = new Double( 3.14159 );
Excelencia Académica
55
Double d2 = new Double( "314159E-5" );
System.out.println( d1 + " = " + d2 + " -> " +
d1.equals( d2 ) );
}
}
Si se ejecuta y observa la salida, se comprueba que ambos constructores han creado
instancias de Double idénticas, como lo demuestra el hecho de que el método equals()
devuelva true.
Declaraciones
La primera sentencia creará una variable double y la segunda un objeto Double:
double d;
Double D;
Valores de Double
Double.POSITIVE_INFINITY
Double.NEGATIVE_INFINITY
Double.NaN
Double.MAX_VALUE
Double.MIN_VALUE
Métodos de Double
D.isNaN();
Double.isNaN( d );
D.isInfinite();
Double.isInfinite( d );
boolean D.equals();
String D.toString();
int D.intValue();
long D.longValue();
float D.floatValue();
double D.doubleValue();
int i = D.hashCode();
Double V.valueOf( String s );
long l = Double.doubleToLongBits( d );
double d = Double.longBitsToDouble( l );
La Clase Integer
El tipo int tiene el objeto Integer. De la misma forma que con la clase Character, se han
codificado muchas funciones útiles dentro de los métodos de la clase Integer.
Excelencia Académica
56
Declaraciones
La primera sentencia creará una variable int y la segunda un objeto Integer:
int i;
Integer I;
Valores de Integer
Integer.MIN_VALUE;
Integer.MAX_VALUE;
MétodosdeInteger
String Integer.toString( int i ) Convierte el int que se
pasa al método en su
representación como
cadena
String Integer.toString(int i,int base)
int I.parseInt( String s ) Convierte la variable String
en el valor int que
representa
int I.parseInt( String s,int base ) Igual que el anterior, a
excepción de que se indica
una base distinta a la
decimal
Integer Integer.valueOf( String s )
Integer Integer.valueOf(String s,int base)
int I.intValue()
float I.floatValue()
String I.toString()
boolean I.equals( Object obj )
long I.longValue()
double I.doubleValue()
int I.hashCode()
En los métodos toString(), parseInt() y valueOf() que no se especifica la base sobre la que
se trabaja, se asume que es base 10.
La Clase Long
El tipo long tiene el objeto Long. De la misma forma que con la clase Character, se han
codificado muchas funciones útiles dentro de los métodos de la clase Long.
Declaraciones
La primera sentencia creará una variable long y la segunda un objeto Long:
long l;
Long L;
Excelencia Académica
57
Valores de Long
Long.MIN_VALUE;
Long.MAX_VALUE;
Métodos de Long
String Long.toString( long l,int base );
String Long.toString( long l );
long L.parseLong( String s,int base );
long L.parseLong( String s );
Long Long.valueOf( String s,int base );
Long Long.valueOf( String s );
int L.intValue();
long L.longValue();
float L.floatValue();
double L.doubleValue();
String L.toString();
int L.hashCode();
boolean L.equals( Object obj );
En los métodos toString(), parseInt() y valueOf() que no se especifica la base sobre la que
se trabaja, se asume que es base 10.
La Clase Boolean
Los valores boolean también tienen su tipo asociado Boolean, aunque en este caso hay
menos métodos implementados que para el resto de las clases numéricas.
Declaraciones
La primera sentencia creará una variable boolean y la segunda un objeto Boolean:
boolean b;
Boolean B;
Valores de Boolean
Boolean.TRUE;
Boolean.FALSE;
Métodos de Boolean
boolean B.booleanValue();
String B.toString();
boolean B.equals( Object obj );
Excelencia Académica
58
La Clase String
Dentro de un objeto de la clases String o StringBuffer, Java crea un array de caracteres de
una forma similar a como lo hace el lenguaje C++. A este array se accede a través de las
funciones miembro de la clase.
Los strings u objetos de la clase String se pueden crear explícitamente o implícitamente.
Para crear un string implícitamente basta poner una cadena de caracteres entre comillas
dobles. Por ejemplo, cuando se escribe
System.out.println("El primer programa");
Java crea un objeto de la clase String automáticamente.
Para crear un string explícitamente escribimos
String str=new String("El primer programa");
También se puede escribir, alternativamente
String str="El primer programa";
Para crear un string nulo se puede hacer de estas dos formas
String str="";
String str=new String();
Un string nulo es aquél que no contiene caracteres, pero es un objeto de la clase String.
Sin embargo,
String str;
está declarando un objeto str de la clase String, pero aún no se ha creado ningún objeto de
esta clase.
Cómo se obtiene información acerca del string
Una vez creado un objeto de la clase String podemos obtener información relevante acerca
del objeto a través de las funciones miembro.
Para obtener la longitud, número de caracteres que guarda un string se llama a la función
miembro length.
String str="El primer programa";
int longitud=str.length();
Podemos conocer si un string comienza con un determinado prefijo, llamando al método
startsWith, que devuelve true o false, según que el string comience o no por dicho prefijo
String str="El primer programa";
boolean resultado=str.startsWith("El");
En este ejemplo la variable resultado tomará el valor true.
De modo similar, podemos saber si un string finaliza con un conjunto dado de caracteres,
mediante la función miembro endsWith.
String str="El primer programa";
boolean resultado=str.endsWith("programa");
Excelencia Académica
59
Si se quiere obtener la posición de la primera ocurrencia de la letra p, se usa la función
indexOf.
String str="El primer programa";
int pos=str.indexOf('p');
Para obtener las sucesivas posiciones de la letra p, se llama a otra versión de la misma
función
pos=str.indexOf('p', pos+1);
El segundo argumento le dice a la función indexOf que empiece a buscar la primera
ocurrencia de la letra p a partir de la posición pos+1.
Otra versión de indexOf busca la primera ocurrencia de un substring dentro del string.
String str="El primer programa";
int pos=str.indexOf("pro");
Vemos que una clase puede definir varias funciones miembro con el mismo nombre pero
que tienen distinto número de parámetros o de distinto tipo.
Comparacióndestrings
La comparación de strings nos da la oportunidad de distinguir entre el operador lógico == y
la función miembro equals de la clase String. En el siguiente código
String str1="El lenguaje Java";
String str2=new String("El lenguaje Java");
if(str1==str2){
System.out.println("Los mismos objetos");
}else{
System.out.println("Distintos objetos");
}
if(str1.equals(str2)){
System.out.println("El mismo contenido");
}else{
System.out.println("Distinto contenido");
}
Esta porción de código devolverá que str1 y str2 son distintos objetos pero con el mismo
contenido. str1 y str2 ocupan posiciones distintas en memoria pero guardan los mismos
datos.
Cambiemos la segunda sentencia y escribamos
String str1="El lenguaje Java";
String str2=str1;
System.out.prinln("Son el mimso objeto "+(str1==str2);
Los objetos str1 y str2 guardan la misma referencia al objeto de la clase String creado. La
expresión (str1==str2) devolverá true.
Excelencia Académica
60
Así pues, el método equals compara un string con un objeto cualquiera que puede ser otro
string, y devuelve true cuando dos strings son iguales o false si son distintos.
String str="El lenguaje Java";
boolean resultado=str.equals("El lenguaje Java");
La variable resultado tomará el valor true.
La función miembro comapareTo devuelve un entero menor que cero si el objeto string es
menor (en orden alfabético) que el string dado, cero si son iguales, y mayor que cero si el
objeto string es mayor que el string dado.
String str="Tomás";
int resultado=str.compareTo("Alberto");
La variable entera resultado tomará un valor mayor que cero, ya que Tomás está después
de Alberto en orden alfabético.
String str="Alberto";
int resultado=str.compareTo("Tomás");
La variable entera resultado tomará un valor menor que cero, ya que Alberto está antes
que Tomás en orden alfabético.
Extraerunsubstringdeunstring
En muchas ocasiones es necesario extraer una porción o substring de un string dado. Para
este propósito hay una función miembro de la clase String denominada substring.
Para extraer un substring desde una posición determinada hasta el final del string
escribimos
String str="El lenguaje Java";
String subStr=str.substring(12);
Se obtendrá el substring "Java".
Una segunda versión de la función miembro substring, nos permite extraer un substring
especificando la posición de comienzo y la el final.
String str="El lenguaje Java";
String subStr=str.substring(3, 11);
Se obtendrá el substring "lenguaje". Recuérdese, que las posiciones se empiezan a contar
desde cero.
Convertirunnúmero a string
Para convertir un número en string se emplea la función miembro estáticavalueOf (más
adelante explicaremos este tipo de funciones).
int valor=10;
String str=String.valueOf(valor);
La clase String proporciona versiones de valueOf para convertir los datos primitivos: int,
long, float, double.
Excelencia Académica
61
Esta función se emplea mucho cuando programamos applets, por ejemplo, cuando
queremos mostrar el resultado de un cálculo en el área de trabajo de la ventana o en un
control de edición.
Convertir un string en número
Cuando introducimos caracteres en un control de edición a veces es inevitable que
aparezcan espacios ya sea al comienzo o al final. Para eliminar estos espacios tenemos la
función miembro trim
String str=" 12 ";
String str1=str.trim();
Para convertir un string en número entero, primero quitamos los espacios en blanco al
principio y al final y luego, llamamos a la función miembro estática parseInt de la clase
Integer (clase envolvente que describe los números enteros)
String str=" 12 ";
int numero=Integer.parseInt(str.trim());
Para convertir un string en número decimal (double) se requieren dos pasos: convertir el
string en un objeto de la clase envolvente Double, mediante la función miembro estática
valueOf, y a continuación convertir el objeto de la clase Double en un tipo primitivo double
mediante la función doubleValue
String str="12.35 ";
double numero=Double.valueOf(str).doubleValue();
Se puede hacer el mismo procedimiento para convertir un string a número entero
String str="12";
int numero=Integer.valueOf(str).intValue();
El siguiente programa muestra el uso de la clase String.
public class Test
{
public static void main(String[] args)
{
String str1 = "La provincia de Santander es muy bonita";
String str2 = "La provincia de SANTANDER es muy bonita";
String strtemp;
int resultado;
resultado = str1.compareToIgnoreCase(str2);
if( resultado > 0 )
strtemp = "mayor que ";
else if( resultado < 0 )
strtemp = "menor que ";
else
Excelencia Académica
62
strtemp = "igual a ";
System.out.println( str1 + " es " + strtemp + str2 );
}
}
Para escribir una aplicación se escribe primero con el editor de textos el programa y
después se compila. Si no existen errores se ejecuta el programa el que se guarda
automáticamente en el disco con el nombre de la clase principal.
La clase math contiene métodos que permite la manipulación de números incluyendo
funciones para convertir y manejar funciones matemáticas con datos numéricos.
Existen clases para realizar el tratamiento de caracteres y cadenas de textos con las cuales
se realiza las conversiones de datos String y otros.
Fco. Javier Ceballos Curso de Programación Java 2
Alfaomega-Rama, España 2,003 Segunda Edición
Luis Joyanes Aguilar Programación en Java
Prentice Hall, España
José Pérez Mayor Programación en Java Paso a Paso
Thomson, España 2,003
Deitel y Deitel Curso de Programación en Java
Prentice Hall, España, 1,995
En el siguiente UNIDAD TEMÁTICA se estudiarán las estructuras de control que nos
permitirán escribir programas más complejos y completos
Excelencia Académica
63
Se debe tener presente que cuando se quiere utilizar los métodos de una clase se deben
importar la clase respectiva al programa que se está construyendo.
Existen métodos que sirven para realizar conversiones de datos y también existen métodos
que sirven para realizar comparaciones y generan un resultado lógico o boleano.
Escribir un programa que permita el ingreso de un número entero tipo byte, un número
entero tipo int, un número entero tipo long, un número real tipo float y un número real tipo
double y que se conviertan a cadenas de texto y se muestre por pantalla una cadena con
todos los número ingresados.
Manejar en forma adecuada las clases math,
Carácter, String, Integer, Flota y sus respectivos métodos.
Excelencia Académica
64
Nº 4
Nombre__________________________________________________________________
Apellidos_______________________________________Fecha _____________________
Ciudad ______________________________Semestre_____________________________
1.- Escribir un programa que solicite un número y que después muestre el número con su
parte decimal redondeado a tres dígitos.
2.- Escribir un programa que solicite un número, que solicite la cantidad de dígitos de la
parte real válidos y que muestre el número con la cantidad de dígitos de la parte real
indicado y redondeado.
3.- Escribir un programa que soliste una cadena de texto y que después solicite otra
cadena de texto y que después por pantalla nos diga en que posición de la primera
cadena se encuentra la segunda cadena.
4.- Escribir un programa que solicite un número entero de hasta tres dígitos y que después
muestre por pantalla cada uno de los dígitos que tiene el número.
Excelencia Académica
65
ESTRUCTURAS DE CONTROL
Durante un programa existen acciones que se van a ejecutar bajo ciertas condiciones de
control o que se van a repetir un número determinado de veces. Por ejemplo, leer 3
caracteres de un flujo de entrada in se codificaría o leer 20 números enteros, etc.
Estructuras de Control
El lenguaje Java soporta las siguientes estructuras de control:
Estructura Sentencia
Toma de decision if-else, switch-case
Bucle for, while, do-while
Otras break, continue, label:, return, goto
Aunque goto es una palabra reservada, actualmente el lenguaje Java no soporta la
sentencia goto. Se puede utilizar las sentencias de bifurcación en su lugar.
Estructura Condicional If y Swicht
La sentencia if-else de Java permite que los programas puedan ejecutar distintos conjuntos
de sentencias según algún criterio o condición.
La sintaxis de la sentencia if-else es:
if ( condición )
Bloque de código a ejecutar si la condición es verdadera
else
Bloque de código a ejecutar si la condición es falsa
La parte del else es opcional, y un bloque de código puede ser simplemente la sentencia
vacía ; para representar que en ese caso no se ha de ejecutar nada. Si se tiene una
sentencia if sin su respectiva parte else, se dice que se tiene una estructura condicional
simple, mientras que si se usa la sentencia else se dice que se tiene una estructura
condicional múltiple.
Supongamos que un programa debe realizar diferentes acciones dependiendo de si el
usuario oprime el botón aceptar o el botón cancelar en una ventana de dialogo. Nuestro
programa puede realizar esto usando la sentencia if - else:
// La respuesta es Aceptar o Cancelar
Excelencia Académica
66
if (respuesta == Aceptar) {
// código para realizar la acción Aceptar
System.out.println( "Su peticion esta siendo atendida" );
}
else {
// código para realizar la acción Cancelar
System.out.println( "Cancelando accion" );
}
Se pueden anidar expresiones if-else, para poder implementar aquellos casos con múltiples
acciones. Esto es lo que se suele denominar como sentencias else if.
Por ejemplo, supongamos que se desea escribir un programa que clasifique según el
contenido de una variable valor, asigne una letra a una variable clasificacion: A para un
valor de 100 a 91, B de 90 a 81, C para 80 a 71 y F si no es ninguno de los anteriores:
int valor;
char clasificacion;
if (valor > 90)
{clasificacion='A';}
else if (valor > 80)
{clasificacion='B';}
else if (valor > 70)
{clasificacion='C';}
else
{clasificacion='F';}
Se pueden escribir los if en las mismas líneas que los else, pero desde se recomienda
utilizar la forma indentada (como se ha podido ver en el ejemplo), pues es más clara para
el lector.
Este sistema de programación (else if) no es demasiado recomendable, y por ello el
lenguaje Java incluye la sentencia switch, que veremos a continuación, para dirigir el flujo
de control de variables con múltiples valores.
Sentencia Switch
Mediante la sentencia switch se puede seleccionar entre varias sentencias según el valor
de cierta expresión.
La forma general de switch es la siguiente:
switch ( expresionMultivalor ) {
case valor1 : conjuntoDeSentencias1; break;
case valor2 : conjuntoDeSentencias2; break;
case valor3: conjuntoDeSentencias3; break;
Excelencia Académica
67
.
.
.
case valorn: conjuntoDeSentenciasn; break;
default: conjuntoDeSentenciasdef; break;
} // fin de la sentencia switch
La sentencia switch evalúa la expresiónMultivalor y ejecuta el conjuntoDeSentenciasX que
aparece junto a la cláusula case cuyo valor corresponda con el de la expresiónMultivalor.
Cada sentencia case debe ser única y el valor que evalúa debe ser del mismo tipo que el
devuelto por la expresiónMultivalor de la sentencia switch.
Las sentencias break que aparecen tras cada conjuntoDeSentencias provocan que el
control salga del switch y continúe con la siguiente instrucción al switch. Las sentencias
break son necesarias porque sin ellas se ejecutarían secuencialmente las sentencias case
siguientes. Existen ciertas situaciones en las que se desea ejecutar secuencialmente
algunas o todas las sentencias case, para lo que habrá que eliminar algúnos break.
Finalmente, se puede usar la sentencia default para manejar los valores que no son
explícitamente contemplados por alguna de las sentencias case. Su uso es altamente
recomendado.
Por ejemplo, supongamos un programa con una variable entera meses cuyo valor indica el
mes actual, y se desea imprimir el nombre del mes en que estemos. Se puede utilizar la
sentencia switch para realizar esta operación:
int meses;
switch ( meses ){
case 1: System.out.println( "Enero" ); break;
case 2: System.out.println( "Febrero" ); break;
case 3: System.out.println( "Marzo" ); break;
//Demás meses
// . . .
case 12: System.out.println( "Diciembre" ); break;
default: System.out.println( "Mes no valido" ); break;
}
Por supuesto, se puede implementar esta estructura como una sentencia if else if:
int meses;
if ( meses == 1 ) {
System.out.println( "Enero" );
}
else
if ( meses == 2 ) {
Excelencia Académica
68
System.out.println( "Febrero" );
}
// Y así para los demás meses
El decidir si usar la sentencia if o switch depende del criterio de cada caso. Se puede
decidir cuál usar basándonos en la legibilidad, aunque se recomienda utilizar switch para
sentencias con más de tres o cuatro posibilidades.
EJEMPLO 1
Escribir un programa que solicite un número entero y muestre por pantalla un mensaje
indicando si el número que se ha ingresado es par, impar o es cero.
import java.io.*;
public class ParImpar
{
public static void main(String[] args) throws IOException
{
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader flujoE = new BufferedReader(isr);
int N;
System.out.print("Ingrese un número entero : ");
N=Integer.parseInt(flujoE.readLine());
//verificacion si es par o impar
if (N==0) System.out.println("El número es cero");
else if (N%2==0) System.out.println("El número es par");
else System.out.println("El número es impar");
}
}
EJEMPLO 2
Escribir un programa que solicite un carácter y que muestre el carácter ingresad, su código
ASCII y si este código es par o impar.
import java.io.*;
public class Caracter
{
Excelencia Académica
69
public static void main(String[] args) throws IOException
{
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader flujoE = new BufferedReader(isr);
int N;
System.out.print("Ingrese un caracter y presione Enter : ");
N=System.in.read();
System.out.print("EL caracter es "+(char)N+" su código ASCII es "+N);
//verificacion si el código es par o impar
if (N%2==0) System.out.println(" y es par");
else System.out.println(" y es impar");
}
}
5.1
1.- Ingresar un número cualquiera e informar si es o no es mayor de 100.
2.- Ingresar un número entero cualquiera e informar si es o no es múltiplo de 4 ( recordar
el operador modulo o residuo (%), analizado en el tema de operadores aritméticos).
3.- Ingresar los cinco datos más importantes de un Empleado, incluyendo el sueldo diario
y los días trabajados desplegarle su cheque semanal solo si ganó más de $500.00 en
la semana, en caso contrario desplegarle un bono de despensa semanal de $150.00.
4.- Ingresar los datos más importantes de un estudiante incluyendo tres calificaciones
construir una boleta de calificaciones si el estudiante es de la carrera de medicina, en
caso contrario construir una pantalla más bonita todavía que despliega un oficio
citando a los padres del estudiante a una platica amistosa con los maestros de la
universidad.
5.- Ingresar los datos más importantes de un producto cualquiera, incluyendo cantidad,
precio, etc. desplegar una orden de compra, solo si el producto es de origen nacional,
en caso contrario no hacer nada.
Ciclos Repetitivos
Excelencia Académica
70
Los ciclos repetitivos, llamados también ciclos, anillos o lazos se utilizan como una
estructura que repite una instrucción o grupo de instrucciones bajo una condición.
a) Bucle while
El bucle while sirve para realizar una acción sucesivamente mientras se cumpla una
determinada condición.
La forma general del bucle while es la siguiente:
while ( condición ) {
sentencias que se repiten;
};
Las sentencias se ejecutan mientras la condición tenga un valor verdadero, cuando la
condición es falsa se termina el ciclo repetitivo y se pasa a la siguiente sentencia.
Se utiliza, por ejemplo para estar en un bucle del que no hay que salir hasta que no se
cumpla una determinada condición. Por ejemplo, multiplicar un número por 2 hasta que sea
mayor que 100:
int i = 1;
while ( i <= 100 ) {
i = i * 2;
}
Con él se podrían eliminar los bucles do-while y for por ser extensioones de éste, pero que
se incluyen en el lenguaje para facilitar la programación.
b) Bucle do-while
El bucle do-while es similar al bucle while, pero en el bucle while la expresión se evalúa al
principio del bucle y en el bucle do-while la evaluación se realiza al final.
La forma general del bucle do-while es la siguiente:
do {
sentencias que se repiten;
} while ( condición );
La sentencia do-while es el constructor de bucles menos utilizado en la programación, pero
tiene sus usos, cuando el bucle deba ser ejecutado por lo menos una vez. En esta
estructura el bucle se repite si la condición es verdadera y se termina cuando la condición
es falsa.
Por ejemplo, cuando se lee información de un archivo, se sabe que siempre se debe leer
por lo menos un carácter:
Lenguaje de programacion i
Lenguaje de programacion i
Lenguaje de programacion i
Lenguaje de programacion i
Lenguaje de programacion i
Lenguaje de programacion i
Lenguaje de programacion i
Lenguaje de programacion i
Lenguaje de programacion i
Lenguaje de programacion i
Lenguaje de programacion i
Lenguaje de programacion i
Lenguaje de programacion i
Lenguaje de programacion i
Lenguaje de programacion i
Lenguaje de programacion i
Lenguaje de programacion i
Lenguaje de programacion i
Lenguaje de programacion i
Lenguaje de programacion i
Lenguaje de programacion i
Lenguaje de programacion i
Lenguaje de programacion i
Lenguaje de programacion i
Lenguaje de programacion i
Lenguaje de programacion i
Lenguaje de programacion i
Lenguaje de programacion i
Lenguaje de programacion i
Lenguaje de programacion i
Lenguaje de programacion i
Lenguaje de programacion i
Lenguaje de programacion i
Lenguaje de programacion i
Lenguaje de programacion i
Lenguaje de programacion i
Lenguaje de programacion i
Lenguaje de programacion i
Lenguaje de programacion i
Lenguaje de programacion i
Lenguaje de programacion i
Lenguaje de programacion i
Lenguaje de programacion i
Lenguaje de programacion i
Lenguaje de programacion i
Lenguaje de programacion i
Lenguaje de programacion i
Lenguaje de programacion i
Lenguaje de programacion i
Lenguaje de programacion i
Lenguaje de programacion i
Lenguaje de programacion i
Lenguaje de programacion i
Lenguaje de programacion i
Lenguaje de programacion i
Lenguaje de programacion i
Lenguaje de programacion i
Lenguaje de programacion i
Lenguaje de programacion i
Lenguaje de programacion i
Lenguaje de programacion i
Lenguaje de programacion i
Lenguaje de programacion i
Lenguaje de programacion i
Lenguaje de programacion i
Lenguaje de programacion i
Lenguaje de programacion i
Lenguaje de programacion i
Lenguaje de programacion i
Lenguaje de programacion i
Lenguaje de programacion i
Lenguaje de programacion i
Lenguaje de programacion i
Lenguaje de programacion i
Lenguaje de programacion i
Lenguaje de programacion i
Lenguaje de programacion i
Lenguaje de programacion i

Más contenido relacionado

La actualidad más candente

Unidad 1
Unidad 1Unidad 1
Unidad 1
Ana
 
Direccionamiento ip
Direccionamiento ipDireccionamiento ip
Direccionamiento ip
Jorge Arroyo
 
1. codificación de la información
1. codificación de la información1. codificación de la información
1. codificación de la información
Carlos OL
 
Introducción a la informática mc graw-hill
Introducción a la informática   mc graw-hillIntroducción a la informática   mc graw-hill
Introducción a la informática mc graw-hill
checani
 
Diapositivas tecno
Diapositivas tecnoDiapositivas tecno
Diapositivas tecno
dacumo
 
Introduccionalainformatica
IntroduccionalainformaticaIntroduccionalainformatica
Introduccionalainformatica
elpropio_88
 
Tipos de datos en programacion
Tipos de datos en programacionTipos de datos en programacion
Tipos de datos en programacion
Alfonso
 
¿Qué es informática?
¿Qué es informática?¿Qué es informática?
¿Qué es informática?
Juan Arévalo
 
Introducción a la Informática
Introducción a la InformáticaIntroducción a la Informática
Introducción a la Informática
mam.garrido
 

La actualidad más candente (18)

Unidad 1
Unidad 1Unidad 1
Unidad 1
 
Laboratorio#4
Laboratorio#4Laboratorio#4
Laboratorio#4
 
Direccionamiento ip
Direccionamiento ipDireccionamiento ip
Direccionamiento ip
 
1. codificación de la información
1. codificación de la información1. codificación de la información
1. codificación de la información
 
Clase 16 06
Clase 16 06Clase 16 06
Clase 16 06
 
Representación de la información (1)
Representación de la información (1)Representación de la información (1)
Representación de la información (1)
 
Introducción a la informática
Introducción a la informáticaIntroducción a la informática
Introducción a la informática
 
Introducción a la informática mc graw-hill
Introducción a la informática   mc graw-hillIntroducción a la informática   mc graw-hill
Introducción a la informática mc graw-hill
 
Representacion de la información en las computadoras
Representacion de la información en las computadorasRepresentacion de la información en las computadoras
Representacion de la información en las computadoras
 
REPRESENTACION DE INFORMACION EN COMPUTADORAS
REPRESENTACION DE INFORMACION EN COMPUTADORASREPRESENTACION DE INFORMACION EN COMPUTADORAS
REPRESENTACION DE INFORMACION EN COMPUTADORAS
 
Unidad4 Parte1
Unidad4 Parte1Unidad4 Parte1
Unidad4 Parte1
 
Diapositivas tecno
Diapositivas tecnoDiapositivas tecno
Diapositivas tecno
 
Introduccion Programacion
Introduccion ProgramacionIntroduccion Programacion
Introduccion Programacion
 
Introduccionalainformatica
IntroduccionalainformaticaIntroduccionalainformatica
Introduccionalainformatica
 
Tipos de datos en programacion
Tipos de datos en programacionTipos de datos en programacion
Tipos de datos en programacion
 
¿Qué es informática?
¿Qué es informática?¿Qué es informática?
¿Qué es informática?
 
Introduccionala informatica
Introduccionala informaticaIntroduccionala informatica
Introduccionala informatica
 
Introducción a la Informática
Introducción a la InformáticaIntroducción a la Informática
Introducción a la Informática
 

Similar a Lenguaje de programacion i

Fundamentos de programacion
Fundamentos de programacionFundamentos de programacion
Fundamentos de programacion
Pablo Villamar
 
Introduccinfp 111003181203-phpapp01
Introduccinfp 111003181203-phpapp01Introduccinfp 111003181203-phpapp01
Introduccinfp 111003181203-phpapp01
alexandra
 
Introduccinfp 111003181203-phpapp01
Introduccinfp 111003181203-phpapp01Introduccinfp 111003181203-phpapp01
Introduccinfp 111003181203-phpapp01
dayaamoguimba
 
Introduccinfp 111003181203-phpapp01
Introduccinfp 111003181203-phpapp01Introduccinfp 111003181203-phpapp01
Introduccinfp 111003181203-phpapp01
Andres Vin
 
fundamentos de programacion
fundamentos de programacionfundamentos de programacion
fundamentos de programacion
DANIEL ARMAS
 
Introducción FundamProgramación
Introducción FundamProgramaciónIntroducción FundamProgramación
Introducción FundamProgramación
JJ (John John) 4601
 
Introduccinfp 111003181203-phpapp01
Introduccinfp 111003181203-phpapp01Introduccinfp 111003181203-phpapp01
Introduccinfp 111003181203-phpapp01
luis cruz
 
La computadora digital
La computadora digitalLa computadora digital
La computadora digital
Megamovil
 
Tutorial proton ide plus part 1
Tutorial proton ide plus part 1Tutorial proton ide plus part 1
Tutorial proton ide plus part 1
dar851112
 
Trabajo informatica
Trabajo informaticaTrabajo informatica
Trabajo informatica
albertonm19
 

Similar a Lenguaje de programacion i (20)

Sistemas numéricos datos y expresiones - tatis
Sistemas numéricos datos y expresiones - tatisSistemas numéricos datos y expresiones - tatis
Sistemas numéricos datos y expresiones - tatis
 
Fundamentos de programacion
Fundamentos de programacionFundamentos de programacion
Fundamentos de programacion
 
Introduccinfp 111003181203-phpapp01
Introduccinfp 111003181203-phpapp01Introduccinfp 111003181203-phpapp01
Introduccinfp 111003181203-phpapp01
 
Introduccinfp 111003181203-phpapp01
Introduccinfp 111003181203-phpapp01Introduccinfp 111003181203-phpapp01
Introduccinfp 111003181203-phpapp01
 
Introduccinfp 111003181203-phpapp01
Introduccinfp 111003181203-phpapp01Introduccinfp 111003181203-phpapp01
Introduccinfp 111003181203-phpapp01
 
fundamentos de programacion
fundamentos de programacionfundamentos de programacion
fundamentos de programacion
 
Introducción FundamProgramación
Introducción FundamProgramaciónIntroducción FundamProgramación
Introducción FundamProgramación
 
Introduccinfp 111003181203-phpapp01
Introduccinfp 111003181203-phpapp01Introduccinfp 111003181203-phpapp01
Introduccinfp 111003181203-phpapp01
 
Unidad 2 arquitectura del computador
Unidad 2 arquitectura del computadorUnidad 2 arquitectura del computador
Unidad 2 arquitectura del computador
 
La computadora digital
La computadora digitalLa computadora digital
La computadora digital
 
Curso básico de ensamblador
Curso básico de ensambladorCurso básico de ensamblador
Curso básico de ensamblador
 
Curso básico de ensamblador
Curso básico de ensambladorCurso básico de ensamblador
Curso básico de ensamblador
 
Curso básico de Ensamblador
Curso básico de EnsambladorCurso básico de Ensamblador
Curso básico de Ensamblador
 
Curso basico de emsamblador
Curso basico de emsambladorCurso basico de emsamblador
Curso basico de emsamblador
 
Tutorial proton ide plus part 1
Tutorial proton ide plus part 1Tutorial proton ide plus part 1
Tutorial proton ide plus part 1
 
Informatica i unidad_iii_13022017
Informatica i unidad_iii_13022017Informatica i unidad_iii_13022017
Informatica i unidad_iii_13022017
 
Trabajo informatica
Trabajo informaticaTrabajo informatica
Trabajo informatica
 
generalidades del computador y sistemas de numeracion.pptx
generalidades del computador y sistemas de numeracion.pptxgeneralidades del computador y sistemas de numeracion.pptx
generalidades del computador y sistemas de numeracion.pptx
 
Progamacion
ProgamacionProgamacion
Progamacion
 
Lo básico para programar
Lo básico para programarLo básico para programar
Lo básico para programar
 

Más de Henry Upla

Más de Henry Upla (20)

Técnicas Virtuales ⒽⓈⒽ
Técnicas Virtuales ⒽⓈⒽTécnicas Virtuales ⒽⓈⒽ
Técnicas Virtuales ⒽⓈⒽ
 
ELEMENTOS BÁSICOS DE LA EXPRESIÓN PLÁSTICA ⒽⓈⒽ
ELEMENTOS BÁSICOS DE LA EXPRESIÓN PLÁSTICA ⒽⓈⒽELEMENTOS BÁSICOS DE LA EXPRESIÓN PLÁSTICA ⒽⓈⒽ
ELEMENTOS BÁSICOS DE LA EXPRESIÓN PLÁSTICA ⒽⓈⒽ
 
Maquinas Virtuales ⒽⓈⒽ
Maquinas Virtuales ⒽⓈⒽMaquinas Virtuales ⒽⓈⒽ
Maquinas Virtuales ⒽⓈⒽ
 
Sensación y percepción ⒽⓈⒽ
Sensación y percepción ⒽⓈⒽSensación y percepción ⒽⓈⒽ
Sensación y percepción ⒽⓈⒽ
 
Procesos cognitivos superiores ⒽⓈⒽ
Procesos cognitivos superiores ⒽⓈⒽProcesos cognitivos superiores ⒽⓈⒽ
Procesos cognitivos superiores ⒽⓈⒽ
 
Maquina virtual ⒽⓈⒽ
Maquina virtual ⒽⓈⒽMaquina virtual ⒽⓈⒽ
Maquina virtual ⒽⓈⒽ
 
Inteligencias múltiples ⒽⓈⒽ
Inteligencias múltiples ⒽⓈⒽInteligencias múltiples ⒽⓈⒽ
Inteligencias múltiples ⒽⓈⒽ
 
Bases biológicas ⒽⓈⒽ
Bases biológicas ⒽⓈⒽBases biológicas ⒽⓈⒽ
Bases biológicas ⒽⓈⒽ
 
Personalidad ⒽⓈⒽ
Personalidad ⒽⓈⒽPersonalidad ⒽⓈⒽ
Personalidad ⒽⓈⒽ
 
Sesión de aprendizaje ⒽⓈⒽ
Sesión de aprendizaje ⒽⓈⒽSesión de aprendizaje ⒽⓈⒽ
Sesión de aprendizaje ⒽⓈⒽ
 
Maquinas virtuales ⒽⓈⒽ
Maquinas virtuales ⒽⓈⒽMaquinas virtuales ⒽⓈⒽ
Maquinas virtuales ⒽⓈⒽ
 
Lectura n° 03 Psicologia ⒽⓈⒽ
Lectura n° 03 Psicologia ⒽⓈⒽLectura n° 03 Psicologia ⒽⓈⒽ
Lectura n° 03 Psicologia ⒽⓈⒽ
 
Lectura n° 02 Psicologia ⒽⓈⒽ
Lectura n° 02 Psicologia ⒽⓈⒽLectura n° 02 Psicologia ⒽⓈⒽ
Lectura n° 02 Psicologia ⒽⓈⒽ
 
Lectura n° 01 Psicologia ⒽⓈⒽ
Lectura n° 01 Psicologia ⒽⓈⒽLectura n° 01 Psicologia ⒽⓈⒽ
Lectura n° 01 Psicologia ⒽⓈⒽ
 
Filosofía medieval y moderna ⒽⓈⒽ
Filosofía medieval y moderna ⒽⓈⒽFilosofía medieval y moderna ⒽⓈⒽ
Filosofía medieval y moderna ⒽⓈⒽ
 
Etapas desarrollo de los 6 a los 12 años ⒽⓈⒽ
Etapas desarrollo de los 6 a los 12 años ⒽⓈⒽEtapas desarrollo de los 6 a los 12 años ⒽⓈⒽ
Etapas desarrollo de los 6 a los 12 años ⒽⓈⒽ
 
Psicología General ⒽⓈⒽ
Psicología General ⒽⓈⒽPsicología General ⒽⓈⒽ
Psicología General ⒽⓈⒽ
 
Caractersticas de niños entre 8 y 10 años
Caractersticas de niños entre 8 y 10 añosCaractersticas de niños entre 8 y 10 años
Caractersticas de niños entre 8 y 10 años
 
Bases biologicas
Bases biologicasBases biologicas
Bases biologicas
 
Oratoria
OratoriaOratoria
Oratoria
 

Último

TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
jlorentemartos
 
6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria
Wilian24
 
Proyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfProyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdf
patriciaines1993
 

Último (20)

Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024
 
TIENDAS MASS MINIMARKET ESTUDIO DE MERCADO
TIENDAS MASS MINIMARKET ESTUDIO DE MERCADOTIENDAS MASS MINIMARKET ESTUDIO DE MERCADO
TIENDAS MASS MINIMARKET ESTUDIO DE MERCADO
 
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
 
Análisis de los Factores Externos de la Organización.
Análisis de los Factores Externos de la Organización.Análisis de los Factores Externos de la Organización.
Análisis de los Factores Externos de la Organización.
 
Feliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdfFeliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdf
 
Interpretación de cortes geológicos 2024
Interpretación de cortes geológicos 2024Interpretación de cortes geológicos 2024
Interpretación de cortes geológicos 2024
 
Sesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronósticoSesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronóstico
 
Tema 19. Inmunología y el sistema inmunitario 2024
Tema 19. Inmunología y el sistema inmunitario 2024Tema 19. Inmunología y el sistema inmunitario 2024
Tema 19. Inmunología y el sistema inmunitario 2024
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
 
activ4-bloque4 transversal doctorado.pdf
activ4-bloque4 transversal doctorado.pdfactiv4-bloque4 transversal doctorado.pdf
activ4-bloque4 transversal doctorado.pdf
 
Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024
 
Usos y desusos de la inteligencia artificial en revistas científicas
Usos y desusos de la inteligencia artificial en revistas científicasUsos y desusos de la inteligencia artificial en revistas científicas
Usos y desusos de la inteligencia artificial en revistas científicas
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
 
La Sostenibilidad Corporativa. Administración Ambiental
La Sostenibilidad Corporativa. Administración AmbientalLa Sostenibilidad Corporativa. Administración Ambiental
La Sostenibilidad Corporativa. Administración Ambiental
 
6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria
 
Factores que intervienen en la Administración por Valores.pdf
Factores que intervienen en la Administración por Valores.pdfFactores que intervienen en la Administración por Valores.pdf
Factores que intervienen en la Administración por Valores.pdf
 
FUERZA Y MOVIMIENTO ciencias cuarto basico.ppt
FUERZA Y MOVIMIENTO ciencias cuarto basico.pptFUERZA Y MOVIMIENTO ciencias cuarto basico.ppt
FUERZA Y MOVIMIENTO ciencias cuarto basico.ppt
 
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPCTRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
 
Proyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfProyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdf
 
Revista Apuntes de Historia. Mayo 2024.pdf
Revista Apuntes de Historia. Mayo 2024.pdfRevista Apuntes de Historia. Mayo 2024.pdf
Revista Apuntes de Historia. Mayo 2024.pdf
 

Lenguaje de programacion i

  • 1. Excelencia Académica 5 PROGRAMACIÓN GENERAL UNIDAD TEMÁTICA Nº 1 Representación de datos en el computador Estructura de un computador Hardware Software y lenguajes de programación Autoaprendizaje 8 horas UNIDAD TEMÁTICA Nº 2 Fundamentos de la Programación Orientada a Objetos El lenguaje de Programación Java Modelamiento de Problemas Actividad 2.1 Componentes de una solución Actividad 2.2 Modelaje Características de los datos Especificación Actividad 2.3 Refinamiento a pasos Pasos para el refinamiento a pasos Actividad 2.4 Autoaprendizaje 8 horas UNIDAD TEMÁTICA Nº 3 Estructura de un programa orientado a objetos Gramática en Java Comentarios Identificadores Palabras reservadas Importación de clases Declaración de clases y métodos El IDE de Java Tipos de datos en Java Declaración de datos Instrucciones en Java Operadores aritméticos Instrucciones de salida de datos en Java Instrucciones de entrada de datos en Java Traducción del modelaje y especificación a un programa Java Autoaprendizaje 8 horas UNIDAD TEMÁTICA Nº 4 Taller de programación 1 La clase math Funciones matemáticas La clase carácter
  • 2. Excelencia Académica 6 Declaraciones Comprobaciones boleanas Traslación de caracteres Métodos de la clase carácter La clase float La clase double La clase integer La clase long La clase bolean La clase String Autoaprendizaje 8 horas UNIDAD TEMÁTICA Nº 5 Estructuras de Control Estructura condicional if y switch La sentencia switch Actividad 5.1 Ciclos repetitivos Bucle while Bucle do-while Bucle for Sentencias de salto: break, continue y return Sentencia break Sentencia continue Sentencia return Actividad 5.2 Autoaprendizaje 8 horas UNIDAD TEMÁTICA Nº 6 Métodos, características y propiedades Clases y métodos abstractos Modificadores de visibilidad Otros modificadores Conceptos básicos de arreglos Declaración de arreglos Creación de objetos de arreglos Arreglos multidimensionales Autoaprendizaje 8 horas UNIDAD TEMÁTICA Nº 7 Paquetes Autoaprendizaje 8 horas UNIDAD TEMÁTICA Nº 8 Gráficos Autoaprendizaje 8 horas
  • 3. Excelencia Académica 7 TABLA DE CONTENIDO UNIDAD TEMÁTICA I Representación de datos en el computador 9 Estructura de un computador 11 Hardware 11 Software y lenguajes de programación 13 UNIDAD TEMÁTICA II Fundamentos de la Programación Orientada a Objetos 17 El lenguaje de Programación Java 19 Modelamiento de Problemas 20 Componentes de una solución 21 Modelaje 22 Características de los datos 22 Especificación 22 Refinamiento a pasos 23 Pasos para el refinamiento a pasos 24 UNIDAD TEMÁTICA III Estructura de un programa orientado a objetos 29 Gramática en Java 29 Comentarios 29 Identificadores 30 Palabras reservadas 31 Importación de clases 31 Declaración de clases y métodos 32 El IDE de Java 32 Tipos de datos en Java 35 Declaración de datos 37 Instrucciones en Java 37 Operadores aritméticos 38 Instrucciones de salida e datos en Java 40 Instrucciones de entrada de datos en Java 41 Traducción del modelaje y especificación a un programa Java 41 UNIDAD TEMÁTICA IV Taller de programación I 47 La clase math 49 Funciones matemáticas 50 La clase carácter 53 Declaraciones 53 Comprobaciones boleanas 53 Traslación de caracteres 53 Métodos de la clase carácter 53 La clase float 54 La clase double 54
  • 4. Excelencia Académica 8 La clase integer 55 La clase long 56 La clase bolean 57 La clase String 58 UNIDAD TEMÁTICA V Estructuras de Control 65 Estructura condicional if y switch 65 La sentencia switch 66 Ciclos repetitivos 69 Bucle while 70 Bucle do-while 70 Bucle for 71 Sentencias de salto: break, continue y return 71 Sentencia break 71 Sentencia continue 72 Sentencia return 73 UNIDAD TEMÁTICA VI Métodos, características y propiedades 77 Clases y métodos abstractos 78 Modificadores de visibilidad 80 Otros modificadores 81 Conceptos básicos de arreglos 82 Declaración de arreglos 82 Creación de objetos de arreglos 83 Arreglos multidimensionales 85 UNIDAD TEMÁTICA VII Conceptos básicos de la programación orientada a objetos 89 Atributos 89 Comportamiento 89 El proyecto 90 La clase 90 Los constructores 93 La vida de un objeto 97 Composición 100 Los paquetes 104 Classpath 105 Los paquetes estándar 107 Interfaces 107 UNIDAD TEMÁTICA VIII Fundamentos para el dibujo con Java 115 Las funciones Saint, repaint y update 115 Visualización de las imágenes 118 Dibujos 123 Apéndices 129
  • 5. Excelencia Académica 9 REPRESENTACIÓN DE DATOS DE UN COMPUTADOR Los computadores manejan los datos usando solamente los dígitos binarios 0 y 1 a los que se les denomina bit. Con este sistema los números se calculan usando potencias de 2 en el sistema de numeración binario. Los números binarios se pueden representar fácilmente en otras potencias cuya base es múltiplo de 2, como la base 8 u octal y la base 16 o hexadecimal. Una forma fácil de pasar de binario a octal es agrupar los bits de 3 en 3 y representar su número octal: Binario Octal 000 0 001 1 010 2 011 3 100 4 101 5 110 6 111 7 De forma similar, se pueden representar los datos en base hexadecimal (base 16), basta con agrupar los bits en grupos de 4 y representar sus números equivalentes en hexadecimal: Binario Hexadecimal Decimal Binario Hexadecimal Decimal 0000 0 0 1000 8 8 0001 1 1 1001 9 9 0010 2 2 1010 A 10 0011 3 3 1011 B 11 0100 4 4 1100 C 12 0101 5 5 1101 D 13 0110 6 6 1110 E 14 0111 7 7 1111 F 15
  • 6. Excelencia Académica 10 Los Números con Signo De acuerdo al sistema de numeración que se use se reserva por lo general el bit de más a la izquierda para el signo. Para evitar las ambigüedades del cero cuando se usan la representación con signo casi universalmente se ha adoptado el sistema de representación en complemento a 2. La conversión es un poco más difícil de entender inicialmente, pero la representación en complemento a 2 con números de 8 bits seria: Binario Decimal 0011 3 0010 2 0001 1 0000 0 1101 -1 1110 -2 1111 -3 En cualquier caso, con 8 bits se pueden representar números sin signo desde 0 hasta 255 mientras que los números con signo serán desde -128 hasta 127. Los números se representan según algoritmos o métodos de conversión que dependen del tipo de dato que se quiere representar como enteros sin signo, enteros con signo, números reales o de punto flotante, números reales de doble precisión, etc. En cambio el otro tipo de datos que se maneja son los caracteres que van a formar los textos, estos caracteres se representan mediante un código numérico equivalente, es decir a cada símbolo de texto o carácter se se asigna un número equivalente llamado código, siendo el más común el código ASCII que sirve para representar hasta 256 caracteres diferentes con valores equivalentes desde 0 a 255. Como la cantidad de caracteres necesarios para realizar comunicaciones es mayor a 256 símbolos, como el caso del español que maneja la ñ y las tildes, o en otros lenguajes que manejan símbolos especiales, se ha tenido que ampliar la cantidad de símbolos codificados por lo que actualmente se maneja el UNICODE que dispone de una mayor cantidad de códigos ya que maneja 16 bits que equivale a 65,536 códigos diferentes. Así, la letra A se representa con el código 65, el espacio en blanco tiene el código 32, la letra a se representa con el código 97, el carácter de tabulación tiene el código 9, etc. Se denomina byte al grupo de 8 bits y es la unidad básica de almacenamiento de datos que se usa. Esta unidad tiene algunos múltiplos conocidos que son los siguietes: Kilobyte o Kbyte o Kbequivale a 210 bytes o 1,024 bytes aprox. 103 bytes Megabyte o Mbyte o Mb equivale a 220 bytes o 1’048,576 bytes aprox. 106 bytes Gigabyte o Gbyte o Gb equivale a 230 bytes o 1,073’741,824 bytes aprox. 103 bytes
  • 7. Excelencia Académica 11 Estructura de un Computador Todos los computadores para su funcionamiento requieren dos componentes fundamentales que son el Hardware y el Software. Hardware Son todos los componentes físicos que forman parte de la computadora, es todo lo que se puede ver y tocar. Todos los computadores personales tienen una estructura similar que esta formada por cuatro componentes básicos que son : La CPU (Unidad Central de Procesamiento), La Memoria, Unidades de entrada/salida y los dispositivos de almacenamiento. La Unidad Central de Procesamiento (CPU o microprocesador) es el componente principal y es el lugar en donde se realizan las operaciones lógicas y matemáticas siendo sus elementos principales los siguientes: - La Unidad de Control : es la responsable de ejecutar las instrucciones y controlar el computador. - Unidad Aritmético Lógica (ALU) donde se realizan las operaciones aritméticas y lógicas. - Registros, son pequeñas memorias de alta velocidad donde se almacenan datos e instrucciones que se están ejecutando. La evolución respecto a la velocidad de estos procesadores ha sido vertiginosa ya actualmente los Pentium IV tienen velocidades de 2.4 y 3.0 MHz. La memoria La memoria de un computador es el lugar donde se almacenan los datos que el computador usa como son las instrucciones, los valores de las variables, los valores de las constantes, el código de programa, el código de las funciones y/o métodos, etc. En forma básica las memorias pueden ser de dos tipos, memoria RAM y memoria ROM. Existen otros tipos de memoria derivados de estos dos tipos fundamentales, pero para nuestro estudio solamente trataremos estos dos tipos de memoria. El tamaño de una memoria se mide o especifica en bytes con sus múltiplos Kilobyte, Megabyte o Gigabyte que equivalen aproximadamente a mil bytes, un millón de bytes y mil millones de bytes respectivamente como se ha visto en un tema anterior. La memoria RAM La Memoria de Acceso Aleatorio (RAM) es el lugar en donde se almacenan los datos e instrucciones del programa así como los datos generados durante la ejecución del programa. Esta memoria es volátil ya que los datos que almacena se pierden si se interrumpe la fuente de energía eléctrica. Como su nombre lo indica es una memoria de acceso aleatorio, es decir el programador tiene acceso total a esta memoria para poner
  • 8. Excelencia Académica 12 datos, modificar sus valores, borrar datos o instrucciones, etc. Por lo que en esta memoria se pueden leer y escribir datos. El tamaño actual más difundido de memoria RAM es de 256 Mb. La memoria ROM La memoria ROM (Read Only Memory), es la memoria solamente de lectura. En esta memoria se almacenan datos y programas que solamente pueden ser leídos para su uso posterior. Esta memoria, como su nombre lo indica, es una memoria solamente de lectura y los datos que almacena no pueden ser modificados. Esta memoria es permanente o no volátil, es decir que los datos guardados no desaparecen cuando se interrumpe la fuente de energía eléctrica como ocurre con las memorias RAM. Un ejemplo de este tipo de memoria es la BIOS (Basic Input Output System) de la computadora, que tiene almacenado el programa de arranque inicial de la computadora que se ejecuta cada vez que prendemos la computadora y nunca puede ser modificado. Dispositivos de entrada de datos Los dispositivos de entrada de datos son la base de la comunicación entre el hombre y el computador, son dispositivos que sirven para convertir las señales analógicas, usadas por el hombre, en señales digitales entendibles por la computadora. Los dispositivos de entrada más comunes son el teclado, mouse, lectora óptica, lápiz óptico, scanner, etc. Dispositivos de salida de datos Los dispositivos de salida de datos son las interfases máquina-hombre, son aquellos que se encargan de convertir las señales digitales en señales analógicas que el ser humano puede entender. Los dispositivos de salida más comunes son el monitor de video, las impresoras, ploter, etc. Dispositivos y medios de almacenamiento Los medios de almacenamiento proporcionan almacenamiento permanente de datos, son más lentos que la memoria RAM pero permiten almacenar gran cantidad de datos almacenando programas y datos. Estos dispositivos son los diskettes, discos duros, CD Rom, DVD, etc. Siendo el más común el disco duro de 80 Gb. Los dispositivos de almacenamiento son los equipos que manejan los medios de almacenamiento como las lectoras de CD Rom, los disketeras o floppy, etc.
  • 9. Excelencia Académica 13 Software y lenguaje de programación El hardware solo no puede ejecutar ni hacer nada por lo que es necesario que todo computador tenga también su software. El software es el llamado programa, es un conjunto de instrucciones u ordenes con una secuencia definida que el computador ejecuta. Estas instrucciones se escriben en un lenguaje que el computador entienda. A medida que la estructura y la programación de los computadores se fue complicando y creciendo, los fabricantes empezaron a proporcionar utilidades para hacer más fácil la administración y programación del computador implementando sistemas operativos, compiladores y programas de usuario. De acuerdo a este cuadro hay dos capas fundamentales: Software de sistema o software base, es decir aquel que proporciona los mecanismos de gestión del hardware como el sistema operativo y las utilidades para desarrollar el software de aplicación (compiladote, editores, bibliotecas, etc.). Sirven como base para el desarrollo y la ejecución de otros programas y permite que el software de aplicación pueda acceder al hardware subyacente. Los sistemas operativos para computadoras personales más comunes actualmente son Windows y Linux. Además de su software propio incluyen muchas bibliotecas y utilidades externas al sistema operativo, pero que también se consideran software del sistema. Software de aplicación, es decir aplicaciones que facilitan el acceso a los servicios del computador. A veces como en el caso de Windows son estas aplicaciones las que caracterizan al sistema de computación como su interfaz grafica, su explorador y sus herramientas ofimáticas que son software de aplicaron muy útiles para los usuarios. Además del sistema operativo y sus bibliotecas, el software de sistema incluye editores para introducir textos y programas en el computador, como compiladores, intérpretes, etc. Los compiladores permiten traducir un programa escrito en un lenguaje de alto nivel a un formato intermedio denominado código objeto y este código se traduce a lenguaje de máquina mediante un enlazador (linker). Cada lenguaje necesita su propio compilador, pero el enlazador es el mismo para cada arquitectura y tipo de archivo ejecutable. Hay muchos lenguajes de programación, al igual que hay muchas lenguas en el mundo. Sin embargo, se pueden clasificar en base a su complejidad en: - Lenguajes de máquina, cada CPU o procesador entiende su propio lenguaje denominado lenguaje de máquina. Las instrucciones de este lenguaje están codificadas en binario y son de muy bajo nivel, siendo muy tedioso y difícil escribir programas directamente en lenguaje de máquina. Programas de Usuario, Aplicaciones Compiladores Editores Bibliotecas … Sistema Operativo Hardware
  • 10. Excelencia Académica 14 - Lenguaje Ensamblador, permite una programación simbólica con instrucciones lógicas, que posteriormente se traducen a lenguaje de máquina por medio de un compilador. Escribir programas en lenguaje ensamblador es mucho más rápido, pero no lo suficiente como para escribir programas complejos. - Lenguajes de Alto Nivel, permiten a los programadores expresar estructuras de datos y de control de forma más sencilla y más parecida a la lógica de aplicaciones que a las necesidades de arquitectura del computador. El primer lenguaje de este tipo fue FORTRAN, luego COBOL y le siguieron muchos lenguajes entre ellos Pascal, C y Turbo C, Java y otros. Toda computadora tiene dos componentes que son el hardware y el software siendo el hardware la parte física y el hardware la parte lógica o de los programas. Los datos se representan por medio de bits donde los números son representados mediante algoritmos que de acuerdo al tipo de número lo convierten a una representación de bits. Los caracteres de texto se representan mediante números equivalentes llamados códigos siendo el más común los Códigos ASCII aunque actualmente por la cantidad de símbolos que se manejan se ha difundido el UNICODE. El harware básico de la computadora está formado por las unidades de entrada, unidades de salida, la unidad central de procesamiento o CPU y la memoria teniendo además componentes adicionales llamados periféricos que se conectan a la CPU como son las unidades de almacenamiento y otros. Fco. Javier Ceballos Curso de Programación Java 2 Alfaomega-Rama, España 2,003 Segunda Edición Luis Joyanes Aguilar Programación en Java Prentice Hall, España José Pérez Mayor Programación en Java Paso a Paso Thomson, España 2,003 Deitel y Deitel Curso de Programación en Java Prentice Hall, España, 1,995
  • 11. Excelencia Académica 15 Habiendo estudiado la representación de datos y los componentes hardware y software de la computadora, en el siguiente UNIDAD TEMÁTICA se estudiará los fundamentos de la programación orientada a objetos y la construcción de programas usando el lenguaje Java. Se debe tener en cuenta que las computadoras solo manejan números, y más específicamente números binarios por lo que todos los datos que manejan deben ser representados como números binarios. La programación usando números binarios o lenguaje de máquina es muy complicada por lo que se usan lenguajes de alto nivel como Java para escribir los programas de aplicación. - Investigar como se realiza la representación de números reales con signo. - Buscar y copiar el código ASCII y verificar el código de las letras, números y signos de puntuación. - En una computadora identificar sus componentes de hardware y sus respectivas características como la velocidad y capacidad de memoria. Identifica y describe los componentes de hardware y software de la computadora. Explica en forma clara cómo se representan los datos en la computadora y lo que son los lenguajes de programación.
  • 12. Excelencia Académica 16 Nº 1 Nombre__________________________________________________________________ Apellidos_______________________________________Fecha _____________________ Ciudad ______________________________Semestre_____________________________ 1.- Describir las partes de un computador referido al hardware del equipo. 2.- Describir la clasificación de los lenguajes de programación de acuerdo a su complejidad. 3.- Describir los tipos de memoria, sus características, su uso, sus unidades y sus aplicaciones. 4.- Con ejemplos, explicar lo que son los lenguajes de programación. 5.- Explicar los niveles del software, referido a su construcción y orientación.
  • 13. Excelencia Académica 17 FUNDAMENTOS DE LA PROGRAMACIÓN ORIENTADA A OBJETOS Los avances en el hardware de las computadoras no a correspondido a los avances equivalentes en el desarrollo de programas o software. Un hardware sin software no funciona y por lo tanto es importante la implementación de programas de aplicación para los usuarios. La producción de aplicaciones más potentes suele significar la presencia de una complejidad cada vez mayor. Los sistemas orientados a objetos tienen características adecuadas para expresar la complejidad de un sistema, algunas de las cuales son: - Adaptabilidad, es decir, facilidad de transporte de unos sistemas a otros. Java se ejecuta sobre una máquina virtual que es su estándar, por tanto, una aplicación se puede adaptar y transportar a cualquier sistema que tenga una máquina virtual. - Reusabilidad, total o parcial, para reducir costos y reutilizar componentes software cuya fiabilidad esta comprobada. - Mantenibilidad, los programas son construidos por muchas personas agrupadas en equipos de trabajo. Con el tiempo estas personas cambian, pero la aplicación permanece e incluso necesita modificaciones. Por ello es importante que los programas sean fáciles de comprender y mantener. En caso contrario sería necesario descartar la aplicación y hacer una nueva. En el caso de Java se tiene un lenguaje especial para la documentación llamado Javadoc que permite documentar los programas desarrollados. Para conseguir estos objetivos se debe aplicar criterios de diseño claros y bien definidos que permitan hacer frente a la complejidad de las aplicaciones, para lo cual se usan técnicas de diseño orientado a objetos. El diseño orientado a objetos consiste en averiguar cuales son los objetos de un sistema, las clases en que se pueden agrupar y las relaciones entre objetos. Los conceptos de clase y objeto son los más importantes de la programación orientada a objetos. Un objeto es cualquier cosa tangible o intangible que se pueda imaginar, definida frente al exterior mediante unos atributos y las operaciones que permiten modificar dichos atributos. Por ejemplo una cuenta bancaria, un motor, una carpeta, un alumno son ejemplos de objetos, pero también lo es una estructura de datos tipo pila, lista, etc. Cada objeto particular se obtiene como una especificación de una entidad más general denominada clase.
  • 14. Excelencia Académica 18 Una clase es una plantilla que permite definir un conjunto de objetos. Por ejemplo alumno es una clase de objetos caracterizado por tener apellidos, nombres, fecha de nacimiento, sexo, nacionalidad, facultad, etc. Por ejemplo el alumno Juan Ramos de Ingeniería de Sistemas, peruano se obtiene instanciando la clase alumno para ese caso particular. La creación de un objeto a partir de una clase se denomina instanciación. Además, en la programación orientada a objetos se usa un mecanismo denominado herencia para diseñar dos o más entidades que son distintas pero comparten muchas características. En cualquier caso es necesario definir una clase antes de poder crear una instancia (objeto) de la clase. En el diseño orientado a objetos, se definen los atributos externos de un objeto y los métodos que exporta. El resto de la información queda oculta. Además, se pueden especificar relaciones de herencia y de polimorfismo. El diseño orientado a objetos esta directamente ligado, aunque no es obligatorio, con los lenguajes de programación orientado a objetos. La técnica de diseño orientada a objetos más popular es UML (Unified Modelling Language). Usando estas técnicas se puede conseguir crear clases que tengan características fundamentales como: - La modularidad, proceso de dividir un objeto en piezas más pequeñas, o módulos, para que algún objetivo sea más fácil de conseguir. Los módulos se suelen asociar a estructuras de datos y las operaciones sobre ellas. Si estos módulos tienen significado semántico se relacionan con objetos. - La abstracción, que permite extraer las propiedades más importantes de un objeto, dejando detalles para el diseño detallado. Estas propiedades varían en función de lo que un usuario espera de un objeto. - La encapsulación, que permite ofrecer a los usuarios una visión de caja negra, de forma que solo se exporte la interfaz de usuario. Esta aproximación, estrechamente ligada con la ocultación de la información, permite empaquetar la funcionalidad de un objeto, de forma que se pueda cambiar la funcionalidad interna si afectar a la visión externa de un componente de un sistema. - La ocultación de la información, un principio que consiste en no mostrar al exterior los datos o las funciones que no sean necesarias. Un módulo bien encapsulado que solo exporta la información necesaria se puede rediseñar completamente sin afectar a su visión anterior. Cuando se escriben los programas orientados a objetos es necesario definir primero las clases. Mientras el programa esta en ejecución, se crean los objetos de estas clases que van a llevar a cabo las tareas. Una tarea puede ser insertar un elemento en una pila u ordenar los datos de los alumnos. En general una clase se define como una estructura de datos y las operaciones que permiten operar con esa estructura de datos (denominada método). Un método definido para una clase se denomina método de clase, y un método definido para un objeto se denomina método de instancia. Los métodos pueden recibir argumentos cuando se les llama. No se puede enviar un
  • 15. Excelencia Académica 19 mensaje a una clase de objeto a menos que tenga un método para manejarlo. Enviar un mensaje a una clase objeto es la forma de ejecutar el método correspondiente y si no hay ningún método conforme, no ocurre nada (o mejor dicho, ocurrirá un error de compilación). El Lenguaje de Programación JAVA El lenguaje de Programación Java surgió en los años 90 como un lenguaje orientado a objetos sencillo, fácil de usar y muy bien adaptado para la programación de aplicaciones en red. El lenguaje Java fue presentado oficialmente en Mayo de 1995. Java permite crear o desarrollar programas de aplicación o aplicaciones que se ejecutan en cualquier computadora que tenga la máquina virtual Java, y también permite crear applets que son aplicaciones que se ejecutan en un navegador para aplicaciones en Internet. Pasos para crear un programa en Java - Aplicaciones  Escribir el programa fuente en cualquier editor y guardarlo con extensión .java  Compilar el fichero fuente mediante: javac miPrograma.java .Esto genera el fichero .class  Ejecutarlo (interpretar los byte-code) : java miPrograma - Applets  Escribir el programa fuente en cualquier editor y guardarlo con extensión .java  Compilar el fichero fuente mediante: javac miProgramaApplet.java  Escribir la pagina web que contendrá al applet y guardar el código con extensión .html  El código mínimo será: <HTML> <BODY> <APPLET code="miProgramaApplet.class" width=400 height=400> </APPLET> </BODY> </HTML> Se tiene 2 posibilidades para ejecutar el applet: - Lanzar un navegador y cargar la página html, o bien - Usar el programa provisto por Sun para ver applets: appletviewer miProgramaApplet.html
  • 16. Excelencia Académica 20 Lo que no tiene Java a diferencia de C y C++ es: a) No hay #define. b) No hay definición de clases como estructuras. c) No hay herencia múltiple. d) No hay goto. e) No hay apuntadores o punteros. f ) No hay funciones. Java permite una programación orientada a objetos sin estilo funcional o procedural. Lo que hace una función en C++ se hace en Java al definir una clase y creando los métodos para dicha clase. Debido a estas características, algunas personas definen a Java así: Java = (C++) - C Modelamiento de Problemas Modelar un problema es encontrar las partes importantes del problema identificando la salida o el resultado de la solución del problema. Para modelar un problema, primero tiene que identificarse y/o definirse bien el problema. Se dice que un problema esta bien definido cuando se ha identificado la situación inicial del problema o el punto de partida inicial y la salida a la que se quiere llegar o solución del problema. La situación a la que se quiere llegar es la respuesta que se debe obtener como solución del problema y se define como SALIDA, mientras que la situación inicial que son los datos necesarios para resolver el problema son los datos iniciales que van a llevarnos a la solución y se define como ENTRADA. Ejemplo Se quiere construir una carpeta. Este es el problema que se quiere resolver, para modelarlo preguntamos sobre la salida o resultado: Que se debe obtener como resultado? Obviamente se necesita UNA CARPETA Evaluamos los datos necesarios o ENTRADA para este problema preguntando: Que necesitamos para construir la carpeta? Se necesita madera, fierros, herramientas, pintura. Con todos estos elementos podemos transformar esta entrada en la salida requerida que es la carpeta.
  • 17. Excelencia Académica 21 2.1 Encuentra la Entrada y Salida de cada uno de los siguientes problemas. Determinar si esta bien definido o no. 1.- Cual es la edad de Mario en años, meses y días. Entrada Salida Bien Definido Si No 2.- Encontrar el promedio de dos números. Entrada Salida Bien Definido Si No 3.- Encontrar el grado de alegría de una persona. Entrada Salida Bien Definido Si No 4.- Encontrar la velocidad con que camina una persona. Entrada Salida Bien Definido Si No Componentes de una Solución Una solución a un problema es la salida que se obtiene al modelar un problema, por lo tanto a partir de los datos de Entrada se debe llegar a la Salida. Un programa escrito en cualquier lenguaje de programación permite, a partir de los datos de entrada, llegar a la solución generando los datos de salida. Los pasos ordenados y sucesivos para llegar desde los datos de entrada a la solución o datos de salida se llama algoritmo. 2.2 Determina la solución para los siguientes problemas: 1.- Llegar a la universidad desde la casa. Entrada Salida Algoritmo 2.- Obtener el promedio de dos números Entrada Salida Algoritmo 3.- Pintar mi habitación Entrada Salida Algoritmo
  • 18. Excelencia Académica 22 4.- Lavar el automóvil Entrada Salida Algoritmo Modelaje Para modelar un problema se debe determinar la Salida requerida y a partir de ello determinar los datos necesarios para llegar a esa solución (Entrada). Después se debe traducir la entrada y salida a un modelo computacional. Un modelo computacional consiste en identificar y detallar cada dato de tal manera que se diferencie de los demás. Características de los Datos Los datos tienen cuatro características que identifican y diferencian de los demás. Estas características son: Valor : es la situación actual del dato que se almacena. Esta situación puede ser cambiante durante la ejecución de programa o puede no cambiar nunca. Clase : Existen dos clases de datos de acuerdo a su uso, las constantes y las variables. Las constantes son las que no cambian de valor mientras que las variables pueden ir cambiando de valor al ejecutar el programa. Identificador : es el nombre que se le pone al dato. Debe ser único para no confundirlo con otro dato. Cada lenguaje de programación define la forma que tienen sus identificadores. Tipo : Es la definición de los valores que puede representar el dato. Los tipos básicos más comunes son entero, real, caracteres y otros. Ejemplo: Calcular el área de un cuadrado. Solución: La salida requerida es el área del cuadrado. Identificador Tipo Área real La entrada necesaria es la medida del lado del cuadrado. Identificador Tipo Lado real El algoritmo es multiplicar lado x lado y con ello obtenemos el área. Especificación Después de haber definido los datos necesarios para resolver un problema y a los cuales hay que llegar, se deben determinar las restricciones para estos datos que son las
  • 19. Excelencia Académica 23 limitaciones que se deben tener en cuenta para que no haya errores al momento de ejecutar el programa, esta es la especificación del problema. Ejemplo: Dada las notas de un estudiante definir cuantas asignaturas desaprobó. Se sabe que se desaprueba un curso cuando se obtiene un promedio final menor a once. La especificación del dato de entrada que son las notas es que estas notas son datos enteros cuyo valor mínimo es cero y el valor máximo que pueden tener es de veinte, además al calcular los promedios se puede tener que la fracción de 0.5 o mayor se redondea al entero superior. 2.3 Realiza el modelaje para determinar si un número es primo o no. Refinamiento a Pasos Para resolver un problema se debe determinar las condiciones de entradas y las restricciones que tenemos para estas {PRE}, al igual que las condiciones de salida o el resultado al que se debe llegar {POST}. El algoritmo es una sucesión de pasos que permite llegar desde la entrada hasta la salida. Entrada Paso 1 Paso 2 Paso 3 . ALGORITMO . . Paso n Salida Refinamiento a pasos es dejar claramente explicado el algoritmo tal que partiendo de la situación inicial y siguiéndolo paso a paso se llegue a la salida. No siempre el refinamiento a pasos o algoritmo de un problemas es la solución única. El algoritmo que se logra, es uno de tal manera que cada paso no se pueda subdividir en otros pasos más pequeños, si todavía algún paso puede sub dividirse, quiere decir que el refinamiento a pasos no ha terminado. Ejemplo: Describir el algoritmo para PAGAR LA PENSION DE ENSEÑANZA Solución: Entrada {PRE} : Se esta en casa y se dispone del dinero para realizar el pago 1. Dirigirse a Caja de la universidad
  • 20. Excelencia Académica 24 2. Reservar y esperar turno de pago 3. Llegado el turno realizar el pago 4. Recoger el recibo 5. Retornar a casa Este algoritmo a pesar de solucionar el problema, todavía puede sub dividirse en otros pasos más específicos, por ejemplo Como dirigirse a la universidad?, Como retornar a casa?, Como realizar el pago?, Se recibe vuelto o no?, por lo tanto se puede refinar más este algoritmo para dejarlo más entendible y se puede tener el siguiente algoritmo: 1. Salir de casa 2. Tomar el transporte que nos lleve a la universidad 3. Cuando llegamos a la universidad, bajar del carro 4. Si hay cola en Caja, ponerse a la cola y esperar 5. Al llegar a Caja entregar el código de alumno y el dinero 6. Recoger el recibo de pago y el vuelto si es que corresponde 7. Salir de la universidad 8. Dirigirse a tomar el transporte que nos lleve de regreso 9. Cuando llegamos, bajar del carro 10. Entrar a la casa Si revisamos este algoritmo podemos, si se desea, refinarlo nuevamente. 2.4 En una hoja aparte, realiza el refinamiento a pasos para los siguientes problemas: 1) Lavar la ropa con una lavadora 2) Vestirse para ir al colegio 3) Pagar el recibo de teléfono. 4) Ver una película en DVD. Pasos para el Refinamiento de Pasos Para realizar el refinamiento a pasos se puede seguir lo siguiente: 1. Entender correctamente el problema: de donde se inicia y a donde se quiere llegar 2. Encontrar una posible serie de pasos para resolver el problema, dividiéndolo en problemas más pequeños. 3. Verificar cada paso: para ver si se puede volver a dividir para hacerlo más simple o explicarlo mejor. Si esto ocurre, incluir los nuevos pasos en donde corresponda en forma ordenada. 4. Confirmar que al recorrer todos los pasos se llega de la entrada a la salida.
  • 21. Excelencia Académica 25 Para que el refinamiento a pasos sea de manera formal, es necesario que a cada uno de los pasos se le determine su Entrada y su Salida. Se notara que para pasos sucesivos, la salida del paso previo será el entrada del paso siguiente. - Los sistemas orientados a objetos tienen características adecuadas para expresar la complejidad de un sistema, algunas de las cuales son: Adaptabilidad, Reusabilidad y Mantenibilidad. - El diseño orientado a objetos consiste en averiguar cuales son los objetos de un sistema, las clases en que se pueden agrupar y las relaciones entre objetos. - Un objeto es cualquier cosa tangible o intangible que se pueda imaginar, definida frente al exterior mediante unos atributos y las operaciones que permiten modificar dichos atributos. Cada objeto particular se obtiene como una especificación de una entidad más general denominada clase. - Java permite crear aplicaciones y applets. - El modelaje consiste en encontrar los limites de un problema, es decir que esperamos encontrar y que necesitamos para ello. - Los problemas que podemos resolver son aquellos que se encuentran bien definidos. - Un problema bien definido es aquel que se le puede identificar claramente la Entrada y la Salida. - La solución a un problema bien definido esta conformada por la Entrada, el Algoritmo y la Salida. - El Algoritmo es la sucesión ordenada de pasos que parten de la Entrada y si se siguen uno a uno, conducen a la salida. Fco. Javier Ceballos Curso de Programación Java 2 Alfaomega-Rama, España 2,003 Segunda Edición Luis Joyanes Aguilar Programación en Java Prentice Hall, España José Pérez Mayor Programación en Java Paso a Paso Thomson, España 2,003 Deitel y Deitel Curso de Programación en Java Prentice Hall, España, 1,995
  • 22. Excelencia Académica 26 Habiendo descrito los principios de la programación orientada a objetos, en los siguientes UNIDAD TEMÁTICAs estudiaremos la programación en Java. Para modelar un problema, primero tiene que identificarse y/o definirse bien el problema. Se dice que un problema esta bien definido cuando se ha identificado la situación inicial del problema o el punto de partida inicial y la salida a la que se quiere llegar o solución del problema. La especificación es la definición de las restricciones para los datos que son las limitaciones que se deben tener en cuenta para que no haya errores al momento de ejecutar el programa. El algoritmo es la sucesión ordenada de pasos que se tienen que seguir para llegar a partir de los datos de entrada hasta los datos de salida requeridos. Identifica en forma clara las entradas, salidas y algoritmo para un problema realizando en forma correcta su modelo computacional. Define en forma clara las características de la programación orientada a objetos. Define las características del lenguaje Java.
  • 23. Excelencia Académica 27 Nº 2 Nombre__________________________________________________________________ Apellidos_______________________________________Fecha _____________________ Ciudad ______________________________Semestre_____________________________ 1.- Defina los siguientes enunciados : a) Algoritmo b) Modelaje c) Problema bien definido 2.- Definir las entradas y salidas para los siguientes problemas : a) Determinar el mayor de dos números Entrada Salida Algoritmo b) Calcular el promedio de los n primeros números Entrada Salida Algoritmo c) Escoger los números pares de una lista de números enteros Entrada Salida Algoritmo 3.- Describir las características de la programación orientada a objetos. 4.- Describir las ventajas de UML. 5.- Describir con ejemplos las características de los datos.
  • 25. Excelencia Académica 29 ESTRUCTURA DE UN PROGRAMA ORIENTADO A OBJETOS En lenguaje Java, como en los otros lenguajes de programación, los programas tienen una estructura definida que siempre debe respetarse. Un programa simple en Java que solamente muestre en pantalla un saludo al programador sería el siguiente: /** Este es primer programa en Java * Imprime la palabra HOLA AMIGOS por la pantalla **/ import java.*; /* La clase principal se denomina ProgramaUno */ public class ProgramaUno { public static void main(String args[]) { // Parte que se ejecuta del programa para mostrar el mensaje System.out.println(“HOLA AMIGO”); La primera parte del ProgramaUno se compone de tres elementos: comentarios, sentencia import y declaración de clases. Estos tres componentes se incluyen siempre en todos los programas de Java. Se puede escribir un programa Java que incluya una única declaración de clase, pero eso no es normal. Vamos a explicar los tres componentes y sus sub componentes. Gramática de Java Comentarios Los comentarios son textos que se ponen en el programa para documentar las instrucciones con la finalidad de hacer más entendible el programa. Los comentarios solo se tienen en el código fuente y no son tomados en cuenta al momento de realizar la compilación del programa. En Java hay tres tipos de comentarios:
  • 26. Excelencia Académica 30 Los dos primeros tipos de comentarios son los que todo programador conoce y se utilizan del mismo modo. Los comentarios de documentación, colocados inmediatamente antes de una declaración (de variable o función), indican que ese comentario ha de ser colocado en la documentación que se genera automáticamente cuando se utiliza la herramienta de Java, javadoc. Dichos comentarios sirven como descripción del elemento declarado permitiendo generar una documentación de nuestras clases escrita al mismo tiempo que se genera el código. Identificadores Los identificadores nombran variables, funciones, clases y objetos; cualquier cosa que el programador necesite identificar o usar. En Java, un identificador comienza con una letra, un subrayado (_) o un símbolo de dólar ($). Los siguientes caracteres pueden ser letras o dígitos. Se distinguen las mayúsculas de las minúsculas y no hay longitud máxima. Ejemplos de identificadores válidos: Identificador nombre_usuario Nombre_Usuario _variable_de_sistema $transaccion y su uso sería, por ejemplo: int contador_principal; char _lista_de_ficheros; float cantidad_en_Ptas; // comentarios para una sola línea /* comentarios de una o más líneas */ /** comentario de documentación, de una o más líneas */
  • 27. Excelencia Académica 31 Palabras Reservadas Las siguientes son las palabras clave que están definidas en Java y que no se pueden utilizar como identificadores, estas palabras sirven para realizar o construir instrucciones y son las siguientes: abstact Boolean break byte case catch char class continue default do double else extends false final Finally float for if implements import instanceof int interface long native new null package private protected public return short static super switch syncroniced this throw throws transient try void volatile while Importación de Clases Los programas orientados a objetos se desarrollan mediante el uso de clases predefinidas siempre que sea posible. Únicamente se deben incluir clases propias cuando no hayan clases predefinidas adecuadas. En Java las clases se agrupan en clases. Un paquete puede incluir sub paquetes, definiendo una jerarquía de paquetes. Para usar los elementos de un paquete dentro de un programa se puede escribir su nombre completo., pero el problema es que se debe usar un punto para separar los nombres de los paquetes lo que puede resultar muy engorroso. Por ejemplo se escribe: java.InputStream.read Con una sentencia import al principio del programa elimina la necesidad de usar los nombres completos, por lo que si se pone en el principio del programa: import java.InputStream; Para referirse al método se puede usar simplemente: read; El principal problema que genera el uso de la sentencia import es la ambigüedad que se origina cuando dos métodos tienen el mismo nombre pero pertenecen a clases distintas por lo que el entorno de programación no sabrá a cual método llamar y llamara a cualquiera de ellos, esto se evita usando los nombres completos.
  • 28. Excelencia Académica 32 Declaración de Clases y Métodos Todo programa Java debe tener al menos una clase: la clase principal. En el ejemplo la clase principal es ProgramaUno. Si se designa una clase como clase principal, entonces se debe definir un método denominado main, porque, cuando se ejecuta el programa Java, se ejecuta primero el método main de la clase principal. La declaración de una clase se realiza usando la palabra reservada class mediante la sentencia: public class ProgramaUno la palabra reservada public indica que esa clase se exporta al exterior. ProgramaUno es el nombre de la clase principal y por extensión de la aplicación por lo que cuando se guarda este programa debe guardarse con el nombre ProgramaUno.java La sintaxis para la declaración de un método es: <modificadores><tipo devuelto><nombre del método> (<parámetros>) { <cuerpo del método> } Donde <modificadores> es una secuencia de términos para designar diferentes tipos de métodos; <tipo devuelto> es el tipo de valor de datos que devuelve el método; <nombre del método> es el nombre del método; <parámetros> es una secuencia de valores que se pasan al método, y <cuerpo del método> es una secuencia de instrucciones. La declaración del método main cumple con este formato: public static void main (String[] args) { … } El método main llama a otro método que es el que escribe en la pantalla el mensaje, este método es: System.out.println(“HOLA AMIGOS”); El IDE de JAVA EL IDE (Entorno Integrado de Desarrollo) es una herramienta que permite elaborar los programas, compilarlos y ejecutarlos mediante el uso de comandos sencillos. Tiene incorporado un procesador de textos para escribir los programas para después compilar y ejecutar. Existen varios IDE que se pueden usar con Java entre ellos tenemos el Jcreator, Eclipse y otros. Vamos a describir en forma rápida los comandos más importantes del JCreator. Para ingresar se hace doble click en el icono del JCreator y se obtendrá la siguiente pantalla:
  • 29. Excelencia Académica 33 Para escribir un programa se debe crear un archivo nuevo, para ello se ejecuta los comandos File, New, File y se mostrara la siguiente pantalla: Se selecciona el tipo de programa que se va a construir, en nuestro caso se debe seleccionar Java File y hacer clic en Next y se mostrara la ventana para escribir el nombre del programa y después se selecciona el directorio en donde se guardara el archivo (para realizar esta selección se hace clic en los tres puntos del lado derecho y se busca el directorio deseado que en nuestro caso será el directorio ejemplo) Para terminar se hace clic en el botón Finish y se abrirá la ventana de texto al lado derecho en donde se puede escribir el programa.
  • 30. Excelencia Académica 34 Se escribe el programa y se compila con los comandos Build, Compile File. Si es la primera vez se tendrá que definir el directorio donde se encuentra el compilador de Java que por lo general estará en la raíz del disco C: en el directorio j2sdk1.4.2_03 Si existen errores, estos se mostraran en la ventana de la parte inferior con la indicación de la línea en donde existe el error y cuando todos los errores se hayan corregido se realizará la compilación mostrando el mensaje Process Completed en la venta inferior Después de haber compilado el programa, debemos ejecutarlo, lo que se hace con los comandos Build, Execute File y aparecerá una ventana con la ejecución del programa para realizar el ingreso de datos y la salida de los resultados como se muestra
  • 31. Excelencia Académica 35 Si el programa se ha compilado y ejecutado, también se habrá guardado en el disco. Para guardar el programa en un archivo con otro nombre se selecciona los comandos File, Save As y se presentará una ventana para poner el nombre y guardar y se termina de guardar haciendo clic en el botón Save. Para recuperar un programa guardado en el disco se selecciona los comandos File, Open y de la ventana que aparece se selecciona el nombre del archivo deseado y se termina haciendo clic en el botón Open Para cerrar la ventana de edición en donde se encuentra un programa se ejecuta los comandos File, Close. Tipos de Datos en Java Todo lenguaje de programación maneja tipos de datos respecto a lo que representa, por lo general se tienen datos numéricos, datos tipo carácter y datos tipo cadena. Los datos numéricos representan cantidades y con ellos se pueden realizar operaciones matemáticas. Son todos los números, por ejemplo 345, 65.38, -78, -8.37
  • 32. Excelencia Académica 36 Los datos tipo carácter sirven para representar un solo símbolos (letras, dígitos, signos de puntuación, etc.) y van entre apóstrofos o comillas simples, como por ejemplo ‘a’, ‘F’, ‘5’, ‘.’, etc. Los apóstrofos no son parte del carácter. Para poder escribir caracteres especiales se antepone el como por ejemplo ‘”’ para tener las comillas, las secuencias de caracteres especiales son las siguientes: Secuencia Significado n Nueva línea t Tabulador horizontal b Retroceso r Retorno de carro f Alimentación de forma Diagonal inversa ' Comilla sencilla " Comillas dobles ddd Valor en Octal xdd Valor en Hexadecimal udddd Únicode Las cadenas de texto son una secuencia de caracteres que van limitados por comillas, pero las comillas solo son delimitadores y no forman parte de la cadena. Son cadenas de texto, por ejemplo: “Hola amigos” “Ingrese un número entero” “La suma de los números es:” “352.564” “Vamos a sumar 5 con 43” Los tipos de datos disponibles en Java son : Tipo bytes Tipo Datos Rango (positivo) Literal byte 1 Entero 127 14 short 2 Entero 32767 14 int 4 Entero 2.147.483.647 14
  • 33. Excelencia Académica 37 long 8 Entero 9.233e15 14 float 4 Coma flotante 1.4e-45 a 3.4e38 36,6 double 8 Coma flotante 4.9e-324 a 1.7e308 3,14e2 char 2 Caracter Únicode 'a' o 064 boolean 1 Booleano true o false true o false El tipo String es un tipo especial de Java que permite el ingreso y manejo de cadenas de texto. Declaración de Datos Para manejar estos datos se usan variables las cuales deben ser declaradas al inicio del programa. Las variables serán representadas por medio de identificadores y la declaración de variables se realiza de la siguiente forma: tipo_de_dato identificador; Se pueden declarar varias variables y asignarles un valor inicial de la siguiente forma: tipo_de_dato identificador1, identificador 2,…; tipo_de_dato identificador = valor; Por ejemplo son declaraciones validas las siguientes: int a: int x,y,z; int E=45; flotat X=4.56, M=0.45; char V, R==’D’; bolean T; String CAD=”Este es un mensaje de texto” ; Instrucciones en JAVA Las instrucciones son las órdenes que se la da a la computadora para que realicen alguna acción. En Java las instrucciones siempre finalizan con un punto y coma. Instrucción ; Se pueden tener instrucciones compuestas o bloques de instrucciones que se deben manejar como una única instrucción, en este caso el bloque de instrucciones comienza con una { y termina con otra }. { instruccion1;
  • 34. Excelencia Académica 38 Instrucción 2; . . Instrucción n; } Operadores Aritméticos Los operadores aritméticos permiten realizar operaciones aritméticas entre dos datos que pueden ser literales o pueden estar representados por variables. Existen operadores monarios que son aquellos que se aplican a un solo dato, pero también existen operadores llamados binarios porque se aplican a dos datos. Los operadores de comparación se utilizan para comparar dos valores y generan un resultado de tipo lógico que puede ser VERDADERO o FALSO y se utilizan para formar las condiciones o controlar la ejecución de ciclos repetitivos. Los operadores en Java son los siguientes: Operadores Unarios: Operador Descripción (prefija) Operador Descripción (pre o posfija) + Convierte el dato a int ++ Incrementa el dato en 1 - Negacion aritmética oper. -- Decrementa el dato en 1 Operadores aritméticos (binarios): Operador Uso Atajo Descripción + op1 + op2 op1 += op2 Suma op1 y op2 - op1 - op2 op1 -= op2 Resta op2 de op1 * op1 * op2 op1 *= op2 Multiplica op1 por op2 / op1 / op2 op1 /= op2 Divide op1 por op2 % op1 % op2 op1 %= op2 Resto de op1 / op2 El atajo es una operación que asigna el resultado de la operación al mismo operador1.
  • 35. Excelencia Académica 39 Por ejemplo si se tienen las variables A que tiene un valor de 15 y una variable B que tiene el valor de 3 se tiene lo siguiente: A + B será 18, los valores de A y B no cambian A * B será 45, los valores de A y B no cambian A += B hará que A valga 18 A * B hará que A valga 45 Operadores de comparación (binarios): Operador Uso Devuelve verdadero si > op1 > op2 op1 es mayor que op2 >= op1 >= op2 op1 es mayor o igual que op2 < op1 < op2 op1 es menor que op2 <= op1 <= op2 op1 es menor o igual que op2 == op1 == op2 op1 y op2 son iguales != op1 != op2 op1 y op2 son distintos && op1 && op2 AND, condicionalmente evalúa op2 & op1 & op2 AND, siempre evalúa op1 y op2 || op1 || op2 OR, condicionalmente evalúa op2 | op1 | op2 OR, siempre evalúa op1 y op2 ! ! op op es falso A > B será VERDADERO A < B será FALSO Operadores de bit (binarios): Operador Uso Operación >> op1 >> op2 Desplaza los bits de op1 a la derecha op2 veces << op1 << op2 Desplaza los bits de op1 a la izquierda op2 veces >>> op1 >>> op2 Desplaza los bits de op1 a la derecha op2 veces (sin signo) & op1 & op2 AND | op1 | op2 OR ^ op1 ^ op2 "XOR" ~ ~op2 Complemento
  • 36. Excelencia Académica 40 Operador terciario: expresion ? sentencia_si : sentencia_si_no Precedencia de operadores: Tipo de operadores Operadores de este tipo Operadores posfijos [ ] . (parametros) expr++ expr-- Operadores unarios ++expr --expr +expr -expr ~ ! Creación o conversión new (tipo) expr Multiplicación * / % Suma + - Desplazamiento << Comparación <<= = instanceof Igualdad == != AND a nivel de bit & OR a nivel de bit ^ XOR a nivel de bit | AND lógico && OR lógico || Condiciónal ? : Asignación = += -= *= /= %= &= ^= |= <<= = = Instrucciones de Salida de Datos en JAVA Las instrucciones de salida de datos sirven para mostrar datos por los dispositivos de salida de datos. En esta parte trataremos solamente la salida de datos a través del monitor de video. Java trata a todos los datos para la salida como si fueran cadenas que pueden concatenarse por medio del signo + que nos va a permitir combinar en la salida datos numéricos, caracteres y cadenas de texto. El método para la salida de datos es: System.out.print(datos_de_salida); Por ejemplo para mostrar el valor del número representado por la variable A se pone:
  • 37. Excelencia Académica 41 System.out.print(“El valor de la variables A es “ + A ); El método println es similar a print solamente que después de imprimir el dato hace un cambio a la linea siguiente: System.out.println(“El valor de la variable A es “ + A) ; Instrucciones de Entrada de Datos en JAVA La entrada de datos en Java se maneja como el ingreso de un flujo de datos desde una fuente, en este caso la fuente del flujo de datos será el teclado, aunque puede ser cualquier otro archivo. Normalmente Java permite el ingreso de un flujo de caracteres, que seria una cadena de texto, la que debe ser convertida para representar el dato numérico requerido. El flujo de datos de entrada se declara de la siguiente forma: InputStreamReader isr=new InputStreamReader(System.in); BufferedReader e=new BufferedReader(isr); Donde e es la variable que va a representar el flujo de datos de entrada, otra forma más corta en una sola instrucción es: BufferedReader e=new BufferedReader (new InputStreamReader(System.in)); Cuando el programa va a realizar ingreso de datos se debe preveer que no se produzcan errors durante este ingreso, esto se realice a través del manejo de excepciones que se tratara posteriormente. Para manejar las excepciones se debe poner al final de la declaración main las palabras: throws IOException siendo la declaración completa de la siguiente forma: public static void main(String[] args) throws IOException Los métodos para el ingreso de datos, considerando las declaraciones anteriores que usan la variable e para el flujo de entrada, son los siguientes: var=System.in.read(); // para el ingreso de números enteros var_byte=Byte.parseByte(e.readLine()); para el ingreso de datosbyte var_short=Short.parseShort(e.readLine()); para el ingreso de datos short var_int=Integer.parseInt(e.readLine()); para el ingrso de datos int var_long=Long.parseLong(e.readLine()); para el ingreso de datos long var_float=Float.parseFloat(e.readLine()); para el ingreso de datos float var_double=Double.parseDouble(e.readLine()); para ingreso de datos double var_String=e.readLine(); para el ingreso de cadenas de texto Traducción del Modelaje y Especificación a un Programa JAVA
  • 38. Excelencia Académica 42 Consiste en realizar todo el modelaje y especificación de datos para llegar desde la entrada hasta la salida y llevar este algoritmo a código Java para ejecutar el programa. EJEMPLO 1 Por ejemplo se requiere tener un programa para sumar dos números enteros que se ingresen por teclado y mostrar la suma. Se tendrá lo siguiente: Datos de Salida : La asuma los dos números ingresados, representado por la variable S. Datos de Entrada : Dos números enteros representados por dos variables de tipo int (variables A y B) cuyo valor se ingresara desde el teclado al momento de ejecutar el programa Algoritmo de Solución: - Ingresar número A - Ingresar número B - Sumar ambos números : S= A + B - Mostrar el valor de S, que es la suma, por la pantalla El código del programa será el siguiente: // Ingreso de dos números y mostrar la suma import java.io.*; public class suma { public static void main(String[] args) throws IOException { // se declara el flujo de entrada de caracteres para la variable e InputStreamReader isr=new InputStreamReader(System.in); BufferedReader e=new BufferedReader(isr); int A,B,S; //se declaran las variables // Ingreso de los dos números System.out.print("Ingresar un número entero "); A=Integer.parseInt(e.readLine()); System.out.print("Ingresar otro número entero "); B=Integer.parseInt(e.readLine()); // Se calcula la suma de los números S = A + B ;
  • 39. Excelencia Académica 43 // Se muestra la suma por pantalla System.out.println("La suma de los dos números es : "+S); EJEMPLO 2 Escribir un programa y su modelo para ingresar los diferentes tipos de datos de Java y después mostrarlos por pantalla, también mostrar la suma de todos los números ingresados. Vamos a dejar como tarea para el estudiante el modelaje de este problema y se muestra a continuación el código del programa. //Ejemplo de ingreso de números, cadenas import java.io.*; public class números { public static void main(String[] args) throws IOException { // se declara el flujo de entrada de caracteres para la variable e InputStreamReader isr=new InputStreamReader(System.in); BufferedReader e=new BufferedReader(isr); // esta es otra forma de declarar el flujo de entrada de caracteres // BufferedReader e=new BufferedReader (new InputStreamReader(System.in)); byte b; short s; int i; long l; float f; double d,suma; //la suma debe ser tipo double String ca; System.out.print("Ingresar un entero byte "); b=Byte.parseByte(e.readLine()); System.out.print("Ingresar un entero short "); s=Short.parseShort(e.readLine()); System.out.print("Ingresar un entero int "); i=Integer.parseInt(e.readLine()); System.out.print("Ingresar un entero long "); l=Long.parseLong(e.readLine());
  • 40. Excelencia Académica 44 System.out.print("Ingresar un real float "); f=Float.parseFloat(e.readLine()); System.out.print("Ingresar un real double "); d=Double.parseDouble(e.readLine()); System.out.print("Ingresar una cadena de texto "); ca=e.readLine(); System.out.println("El entero byte es "+b); System.out.println("El entero short es "+s); System.out.println("El entero int es "+i); System.out.println("El entero long es "+l); System.out.println("El float es "+f); System.out.println("El double es "+d); System.out.println("La cadena es "+ca); suma=b+s+i+l+f+d; System.out.println("La suma de todos es "+suma); } En lenguaje Java, como en los otros lenguajes de programación, los programas tienen una estructura definida que siempre debe respetarse. La gramática de Java está formada por comentarios, identificadores, palabras reservadas, importación de clases, declaración de clases y métodos. Todo programa Java debe tener al menos una clase: la clase principal. Si se designa una clase como clase principal, entonces se debe definir un método denominado main, porque, cuando se ejecuta el programa Java, se ejecuta primero el método main de la clase principal. EL IDE (Entorno Integrado de Desarrollo) es una herramienta que permite elaborar los programas, compilarlos y ejecutarlos mediante el uso de comandos sencillos. Tiene incorporado un procesador de textos para escribir los programas para después compilar y ejecutar. Las características de su instalación se describen en el apéndice I y II. Los datos numéricos representan cantidades y con ellos se pueden realizar operaciones matemáticas. Son todos los números, por ejemplo 345, 65.38, -78, -8.37 Los datos tipo carácter sirven para representar un solo símbolo (letras, dígitos, signos de puntuación, etc.) y van entre apóstrofos o comillas simples, como por ejemplo ‘a’, ‘F’, ‘5’, ‘.’, etc. Los apóstrofos no son parte del carácter. Para poder escribir caracteres especiales se antepone el como por ejemplo ‘”’ para tener las comillas.
  • 41. Excelencia Académica 45 Las cadenas de texto son una secuencia de caracter es que van limitados por comillas, pero las comillas solo son delimitadores y no forman parte de la cadena. Todo dato, representado por una variable, que se utilice en un programa debe ser declarado indicando el tipo de dato que representa y el identificador que lo representará. Java, como los otros lenguajes, trata a las unidades de entrada y salida como elementos que generan flujo de datos o caracteres y a quienes también se les entrega un flujo de caracteres. Fco. Javier Ceballos Curso de Programación Java 2 Alfaomega-Rama, España 2,003 Segunda Edición Luis Joyanes Aguilar Programación en Java Prentice Hall, España José Pérez Mayor Programación en Java Paso a Paso Thomson, España 2,003 Deitel y Deitel Curso de Programación en Java Prentice Hall, España, 1,995 Habiendo estudiado la estructura de un programa en Java, sus instrucciones y sus operadores en los siguientes UNIDAD TEMÁTICAS se tratará sobre la utilización de estas instrucciones en el taller de programación. Todo dato que se utilice en un programa Java y que se represente con una variable, debe ser declarado indicando su tipo de dato y el identificador que lo representará. Todo programa Java debe tener la declaración de una clase principal que debe llevar el mismo nombre que tiene el archivo que guarda el programa con extensión .java y después debe tener una clase de nombre main que es la primera clase que se va a ejecutar.
  • 42. Excelencia Académica 46 Escribir programas con entrada y salida de datos en forma correcta. Utilizar los operadores aritméticos para construir programas que requieran realizar estas operaciones. Nº 3 Nombre__________________________________________________________________ Apellidos_______________________________________Fecha _____________________ Ciudad ______________________________Semestre_____________________________ 1.- Escribir un programa, identificando su salida, entrada (con sus restricciones) y algoritmo para calcular: a) el área y perímetro de un rectángulo. b) el área lateral y volumen de un cilindro. c) el área lateral y volumen de una esfera. d) el costo de una factura donde se ingresa el precio unitario del producto, su nombre y la cantidad comprada considerando el sub total, el IGV (19%= y el total que es la suma del sub total y del IGV.
  • 43. Excelencia Académica 47 TALLER DE PROGRAMACIÓN I (Entrada, Salida, Operadores) En esta parte del curso vamos a desarrollar programas de entrada y salida de datos y vamos a plantear otros para el desarrollo por parte del estudiante. Tenemos los siguientes ejemplos: EJEMPLO1 Escribir un programa que solicite un texto que se ingrese por teclado y que después muestre por pantalla el texto ingresado. * Created on 05/04/2005 * To change the template for this generated file go to * Window&gt;Preferences&gt;Java&gt;Code Generation&gt;Code and Comments */ /** * @author Administrador * * To change the template for this generated type comment go to * Window&gt;Preferences&gt;Java&gt;Code Generation&gt;Code and Comments */ import avail.*; public class Entrada1 { public static void main(String[] args) throws IOException { InputStreamReader isr = new InputStreamReader(System.in); BufferedReader flujoE = new BufferedReader(isr); PrintStream flujoS = System.out; String sdato; try {
  • 44. Excelencia Académica 48 flujoS.print("Introduzca un texto: "); sdato = flujoE.readLine(); System.out.print("El texto ingresado es : "); flujoS.println(sdato); } catch (IOException ignorada){} } } Al compilar y ejecutar el programa se debe ingresar un texto terminando presionando la tecla Enter y se vera que el programa escribe en pantalla el texto ingresado. EJEMPLO 2 Escribir un programa para ingresar un dato y leer el dato usando el método System.in.read(); import java.io.*; public class Entrada2 { public static void main(String[] args) throws IOException { int n,m; byte b; float x,y=4; char ca; System.out.println("Ingrese un dato"); n=System.in.read(); System.out.println("el valor de ingresado es "+(char)n+"ningrese otro dato"); m=System.in.read(); System.out.println("el otro dato ingresado es "+m); System.out.println("Ingrese un caracter"); ca=(char)System.in.read(); System.out.println("El caracter ingresado es "+ca); } } Al ejecutar el programa si se ingresa el texto CAMINAR y se termina presionando Enter, se tiene la siguiente salida:
  • 45. Excelencia Académica 49 Como se nota aparece la C después el 65 y al final la letra M EXPLICACION El método System.in.read() permite el ingreso de un carácter y almacena en la variable asociada a este método sin necesidad de presionar Enter para concluir el ingreso. El valor que se almacena es un número que corresponde al código ASCII del carácter ingresado. Los demás caracteres que se hayan ingresado permanecen en la memoria intermedia del teclado y cuando se encuentra otro método de lectura de carácter se asigna el código del siguiente carácter a la variable asociada al método y así sucesivamente por lo que el código de la letra C se asigna al primer System.in.read() el código de la letra A al segundo y el código de la letra M al tercero, los demás caracteres se pierden incluyendo el Enter (carácter 13) final. Se debe notar que el método System.in.read() permite el ingreso de un dato numérico que es el código ASCII del carácter ingresado y si este dato numérico se debe mostrar como carácter como en la primera salida de datos, se debe convertir con una operación cast que consiste en anteponer el tipo deseado entre paréntesis antes del dato a convertir, en este caso se puso (char)n para convertir el entero n a carácter. Lo mismo se hace si se desea ingresar caracteres usando este método, como en el tercer ingreso de datos, se lee un número pero con el operador cast este número leído se convierte en carácter y es asignado a una variable de carácter como en la instrucción: ca=(char)System.in.read(); La Clase Math La clase Math representa la librería matemática de Java. Las funciones que contiene son las que todos los lenguajes tienen, por eso se encapsulan en Math, y lo mismo sucede con las demás clases que corresponden a objetos que tienen un tipo equivalente (Character, Float, etc.). El constructor de la clase es privado, por los que no se pueden crear instancias de la clase. Sin embargo, Math es public para que se pueda llamar desde cualquier sitio y static para que no haya que inicializarla.
  • 46. Excelencia Académica 50 Funciones Matemáticas Si se importa la clase, se tiene acceso al conjunto de funciones matemáticas estándar que son los siguientes: Math.abs( x ) para int, long, float y double, devuelve el valor absolute Math.sin( double a ) devuelve el seno del ángulo a en radianes Math.cos( double a ) devuelve el coseno del ángulo a en radianes Math.tan( double a ) devuelve la tangente del ángulo a en radianes Math.asin( double r ) devuelve el ángulo cuyo seno es r Math.acos( double r ) devuelve el ángulo cuyo coseno es r Math.atan( double r ) devuelve el ángulo cuya tangente es r Math.atan2(double a,double b) devuelve el ángulo cuya tangente es a/b Math.exp( double x ) devuelve e elevado a x Math.log( double x ) devuelve el logaritmo natural de x Math.sqrt( double x ) devuelve la raíz cuadrada de x Math.ceil( double a ) devuelve el número completo más pequeño mayor o igual que a Math.floor( double a ) devuelve el número completo más grande menor o igual que a Math.rint( double a ) devuelve el valor double truncado de a Math.pow( double x,double y ) devuelve y elevado a x Math.round( x ) para double y float Math.random() devuelve un double Math.max( a,b ) para int, long, float y double Math.min( a,b ) para int, long, float y double Math.E para la base exponencial, aproximadamente 2.72 Math.PI para PI, aproximadamente 3.14 A continuación se muestran algunos ejemplos de utilización de estas funciones: int i = 7; int j = -9; double x = 72.3543; double y = 0.3498;
  • 47. Excelencia Académica 51 System.out.println("i es " + i); System.out.println("j es " + j); System.out.println("x es " + x); System.out.println("y es " + y); // Valor absoluto de un número System.out.println("|" + i + "| es " + Math.abs(i)); System.out.println("|" + j + "| es " + Math.abs(j)); System.out.println("|" + x + "| es " + Math.abs(x)); System.out.println("|" + y + "| es " + Math.abs(y)); // aproximación decimal //empleando (round) System.out.println(x + " es " + Math.round(x)); System.out.println(y + " es " + Math.round(y)); System.out.println(x + " es aprox." + (double)Math.round(x*100)/100); System.out.println(y + " es aprox." + (double)Math.round(y*100)/100); //empleando floor System.out.println("The floor of " + x + " es " + (100*Math.floor(x))/100); System.out.println("The floor of " + y + " es " + (100*Math.floor(y))/100); // para hallar el menor de dos número System.out.println("min(" + i + "," + j + ") es " + Math.min(i,j)); System.out.println("min(" + x + "," + y + ") es " + Math.min(x,y)); // Para hallar el mayor de dos números System.out.println("max(" + i + "," + j + ") es " + Math.max(i,j)); System.out.println("max(" + x + "," + y + ") es " + Math.max(x,y)); // las constantes PI y E System.out.println("Pi es " + Math.PI); System.out.println("e es " + Math.E); //funciones trigonométricas double angulo = 45.0 * Math.PI/180.0; System.out.println("cos(" + angulo + ") es " + Math.cos(angulo)); System.out.println("sin(" + angulo + ") es " + Math.sin(angulo)); System.out.println("tan(" + angulo + ") es " + Math.tan(angulo));
  • 48. Excelencia Académica 52 // Funciones trigonomértricas inversas double valor = 0.707; System.out.println("acos(" + valor + ") es " + Math.acos(valor)); System.out.println("asin(" + valor + ") es " + Math.asin(valor)); System.out.println("atan(" + valor + ") es " + Math.atan(valor)); y=6.2; //ordenada x=-5.4; //abscisa System.out.println("atan2(" + y+" , "+x + ") es " + Math.atan2(y, x)); //Funciones exponencial y logarítmica System.out.println("exp(1.0) es " + Math.exp(1.0)); System.out.println("exp(10.0) es " + Math.exp(10.0)); System.out.println("exp(0.0) es " + Math.exp(0.0)); System.out.println("log(1.0) es " + Math.log(1.0)); System.out.println("log(10.0) es " + Math.log(10.0)); System.out.println("log(Math.E) es " + Math.log(Math.E)); // pow(x,y) devuelve x elevado a y. System.out.println("pow(2.0, 2.0) es " + Math.pow(2.0,2.0)); System.out.println("pow(10.0, 3.5) es " + Math.pow(10.0,3.5)); System.out.println("pow(8, -1) es " + Math.pow(8,-1)); // sqrt(x) devuelve la raíz cuadrada de x. System.out.println("La raíz cuadrada de " + y + " es " + Math.sqrt(y)); // Devuelve un número pseudo-aleatorio comprendido entre 0.0 y 1.0 System.out.println("Número aleatorio: " + Math.random()); System.out.println("Otro número aleatorio: " + Math.random()); El ejemplo javamath.java, muestra la utilización de algunas de las funciones de la clase Math: class javamath { public static void main( String args[] ) { int x; double rand,y,z; float max; rand = Math.random(); x = Math.abs( -123 ); y = Math.round( 123.567 ); z = Math.pow( 2,4 ); max = Math.max( (float)1e10,(float)3e9 );
  • 49. Excelencia Académica 53 System.out.println( rand ); System.out.println( x ); System.out.println( y ); System.out.println( z ); System.out.println( max ); } La Clase Carácter Al trabajar con caracteres se necesitan muchas funciones de comprobación y traslación. Estas funciones están en la clase Character. De esta clase sí que se pueden crear instancias, al contrario que sucede con la clase Math. Declaraciones La primera sentencia creará una variable carácter y la segunda un objeto Character: char c; Character C; Comprobaciones booleanas Character.isLowerCase( char ) devuelve true si el carácter es una letra minúscula Character.isUpperCase( char ) devuelve true si el carácter es una letra mayúscula Character.isDigit( char ) devuelve true para caracteres numéricos Character.isSpace( char ) devuelve true para espacios en blanco En este caso, si tuviésemos un objeto Character C , no se podría hacer C.isLowerCase(), porque no se ha hecho un new de Character. Estas funciones son estáticas y no conocen al objeto, por eso hay que crearlo antes. Traslaciones de Caracteres Character.toLowerCase( char ) convierte entre mayúscula y minúscula Character.toUpperCase( char ) convierte entre minúscula y mayúscula Traslaciones de carácter/dígito int i = Character.digit( c,base ); char c = Character.forDigit( i,base ); Métodos de la clase Character C = new Character( 'J' ); char c = C.charValue(); String s = C.toString();
  • 50. Excelencia Académica 54 La Clase Float Cada tipo numérico tiene su propia clase de objetos. Así el tipo float tiene el objeto Float. De la misma forma que con la clase Character, se han codificado muchas funciones útiles dentro de los métodos de la clase Float. Declaraciones La primera sentencia creará una variable float y la segunda un objeto Float: float f; Float F; Valores de Float Float.POSITIVE_INFINITY Float.NEGATIVE_INFINITY Float.NaN Float.MAX_VALUE Float.MIN_VALUE Conversiones de Clase/Cadena String s = Float.toString( f ); f = Float.valueOf( "3.14" ); Comprobaciones boolean b = Float.isNaN( f ); boolean b = Float.isInfinite( f ); Conversiones de Objetos Float F = new Float( Float.PI ); String s = F.toString(); int i = F.intValue(); long l = F.longValue(); float F = F.floatValue(); double d = F.doubleValue(); La Clase Double Cada tipo numérico tiene su propia clase de objetos. Así el tipo double tiene el objeto Double. De la misma forma que con la clase Character, se han codificado muchas funciones útiles dentro de los métodos de la clase Double. La clase Double tiene un constructor para inicializarla con un valor double o, lo que es muy práctico, con una representación tipo String del valor. El programa javaDouble.java, demuestra la creación de una clase Double pasando un valor double y también pasando una cadena que se puede interpretar como double. class javaDouble { public static void main( String args[] ) { Double d1 = new Double( 3.14159 );
  • 51. Excelencia Académica 55 Double d2 = new Double( "314159E-5" ); System.out.println( d1 + " = " + d2 + " -> " + d1.equals( d2 ) ); } } Si se ejecuta y observa la salida, se comprueba que ambos constructores han creado instancias de Double idénticas, como lo demuestra el hecho de que el método equals() devuelva true. Declaraciones La primera sentencia creará una variable double y la segunda un objeto Double: double d; Double D; Valores de Double Double.POSITIVE_INFINITY Double.NEGATIVE_INFINITY Double.NaN Double.MAX_VALUE Double.MIN_VALUE Métodos de Double D.isNaN(); Double.isNaN( d ); D.isInfinite(); Double.isInfinite( d ); boolean D.equals(); String D.toString(); int D.intValue(); long D.longValue(); float D.floatValue(); double D.doubleValue(); int i = D.hashCode(); Double V.valueOf( String s ); long l = Double.doubleToLongBits( d ); double d = Double.longBitsToDouble( l ); La Clase Integer El tipo int tiene el objeto Integer. De la misma forma que con la clase Character, se han codificado muchas funciones útiles dentro de los métodos de la clase Integer.
  • 52. Excelencia Académica 56 Declaraciones La primera sentencia creará una variable int y la segunda un objeto Integer: int i; Integer I; Valores de Integer Integer.MIN_VALUE; Integer.MAX_VALUE; MétodosdeInteger String Integer.toString( int i ) Convierte el int que se pasa al método en su representación como cadena String Integer.toString(int i,int base) int I.parseInt( String s ) Convierte la variable String en el valor int que representa int I.parseInt( String s,int base ) Igual que el anterior, a excepción de que se indica una base distinta a la decimal Integer Integer.valueOf( String s ) Integer Integer.valueOf(String s,int base) int I.intValue() float I.floatValue() String I.toString() boolean I.equals( Object obj ) long I.longValue() double I.doubleValue() int I.hashCode() En los métodos toString(), parseInt() y valueOf() que no se especifica la base sobre la que se trabaja, se asume que es base 10. La Clase Long El tipo long tiene el objeto Long. De la misma forma que con la clase Character, se han codificado muchas funciones útiles dentro de los métodos de la clase Long. Declaraciones La primera sentencia creará una variable long y la segunda un objeto Long: long l; Long L;
  • 53. Excelencia Académica 57 Valores de Long Long.MIN_VALUE; Long.MAX_VALUE; Métodos de Long String Long.toString( long l,int base ); String Long.toString( long l ); long L.parseLong( String s,int base ); long L.parseLong( String s ); Long Long.valueOf( String s,int base ); Long Long.valueOf( String s ); int L.intValue(); long L.longValue(); float L.floatValue(); double L.doubleValue(); String L.toString(); int L.hashCode(); boolean L.equals( Object obj ); En los métodos toString(), parseInt() y valueOf() que no se especifica la base sobre la que se trabaja, se asume que es base 10. La Clase Boolean Los valores boolean también tienen su tipo asociado Boolean, aunque en este caso hay menos métodos implementados que para el resto de las clases numéricas. Declaraciones La primera sentencia creará una variable boolean y la segunda un objeto Boolean: boolean b; Boolean B; Valores de Boolean Boolean.TRUE; Boolean.FALSE; Métodos de Boolean boolean B.booleanValue(); String B.toString(); boolean B.equals( Object obj );
  • 54. Excelencia Académica 58 La Clase String Dentro de un objeto de la clases String o StringBuffer, Java crea un array de caracteres de una forma similar a como lo hace el lenguaje C++. A este array se accede a través de las funciones miembro de la clase. Los strings u objetos de la clase String se pueden crear explícitamente o implícitamente. Para crear un string implícitamente basta poner una cadena de caracteres entre comillas dobles. Por ejemplo, cuando se escribe System.out.println("El primer programa"); Java crea un objeto de la clase String automáticamente. Para crear un string explícitamente escribimos String str=new String("El primer programa"); También se puede escribir, alternativamente String str="El primer programa"; Para crear un string nulo se puede hacer de estas dos formas String str=""; String str=new String(); Un string nulo es aquél que no contiene caracteres, pero es un objeto de la clase String. Sin embargo, String str; está declarando un objeto str de la clase String, pero aún no se ha creado ningún objeto de esta clase. Cómo se obtiene información acerca del string Una vez creado un objeto de la clase String podemos obtener información relevante acerca del objeto a través de las funciones miembro. Para obtener la longitud, número de caracteres que guarda un string se llama a la función miembro length. String str="El primer programa"; int longitud=str.length(); Podemos conocer si un string comienza con un determinado prefijo, llamando al método startsWith, que devuelve true o false, según que el string comience o no por dicho prefijo String str="El primer programa"; boolean resultado=str.startsWith("El"); En este ejemplo la variable resultado tomará el valor true. De modo similar, podemos saber si un string finaliza con un conjunto dado de caracteres, mediante la función miembro endsWith. String str="El primer programa"; boolean resultado=str.endsWith("programa");
  • 55. Excelencia Académica 59 Si se quiere obtener la posición de la primera ocurrencia de la letra p, se usa la función indexOf. String str="El primer programa"; int pos=str.indexOf('p'); Para obtener las sucesivas posiciones de la letra p, se llama a otra versión de la misma función pos=str.indexOf('p', pos+1); El segundo argumento le dice a la función indexOf que empiece a buscar la primera ocurrencia de la letra p a partir de la posición pos+1. Otra versión de indexOf busca la primera ocurrencia de un substring dentro del string. String str="El primer programa"; int pos=str.indexOf("pro"); Vemos que una clase puede definir varias funciones miembro con el mismo nombre pero que tienen distinto número de parámetros o de distinto tipo. Comparacióndestrings La comparación de strings nos da la oportunidad de distinguir entre el operador lógico == y la función miembro equals de la clase String. En el siguiente código String str1="El lenguaje Java"; String str2=new String("El lenguaje Java"); if(str1==str2){ System.out.println("Los mismos objetos"); }else{ System.out.println("Distintos objetos"); } if(str1.equals(str2)){ System.out.println("El mismo contenido"); }else{ System.out.println("Distinto contenido"); } Esta porción de código devolverá que str1 y str2 son distintos objetos pero con el mismo contenido. str1 y str2 ocupan posiciones distintas en memoria pero guardan los mismos datos. Cambiemos la segunda sentencia y escribamos String str1="El lenguaje Java"; String str2=str1; System.out.prinln("Son el mimso objeto "+(str1==str2); Los objetos str1 y str2 guardan la misma referencia al objeto de la clase String creado. La expresión (str1==str2) devolverá true.
  • 56. Excelencia Académica 60 Así pues, el método equals compara un string con un objeto cualquiera que puede ser otro string, y devuelve true cuando dos strings son iguales o false si son distintos. String str="El lenguaje Java"; boolean resultado=str.equals("El lenguaje Java"); La variable resultado tomará el valor true. La función miembro comapareTo devuelve un entero menor que cero si el objeto string es menor (en orden alfabético) que el string dado, cero si son iguales, y mayor que cero si el objeto string es mayor que el string dado. String str="Tomás"; int resultado=str.compareTo("Alberto"); La variable entera resultado tomará un valor mayor que cero, ya que Tomás está después de Alberto en orden alfabético. String str="Alberto"; int resultado=str.compareTo("Tomás"); La variable entera resultado tomará un valor menor que cero, ya que Alberto está antes que Tomás en orden alfabético. Extraerunsubstringdeunstring En muchas ocasiones es necesario extraer una porción o substring de un string dado. Para este propósito hay una función miembro de la clase String denominada substring. Para extraer un substring desde una posición determinada hasta el final del string escribimos String str="El lenguaje Java"; String subStr=str.substring(12); Se obtendrá el substring "Java". Una segunda versión de la función miembro substring, nos permite extraer un substring especificando la posición de comienzo y la el final. String str="El lenguaje Java"; String subStr=str.substring(3, 11); Se obtendrá el substring "lenguaje". Recuérdese, que las posiciones se empiezan a contar desde cero. Convertirunnúmero a string Para convertir un número en string se emplea la función miembro estáticavalueOf (más adelante explicaremos este tipo de funciones). int valor=10; String str=String.valueOf(valor); La clase String proporciona versiones de valueOf para convertir los datos primitivos: int, long, float, double.
  • 57. Excelencia Académica 61 Esta función se emplea mucho cuando programamos applets, por ejemplo, cuando queremos mostrar el resultado de un cálculo en el área de trabajo de la ventana o en un control de edición. Convertir un string en número Cuando introducimos caracteres en un control de edición a veces es inevitable que aparezcan espacios ya sea al comienzo o al final. Para eliminar estos espacios tenemos la función miembro trim String str=" 12 "; String str1=str.trim(); Para convertir un string en número entero, primero quitamos los espacios en blanco al principio y al final y luego, llamamos a la función miembro estática parseInt de la clase Integer (clase envolvente que describe los números enteros) String str=" 12 "; int numero=Integer.parseInt(str.trim()); Para convertir un string en número decimal (double) se requieren dos pasos: convertir el string en un objeto de la clase envolvente Double, mediante la función miembro estática valueOf, y a continuación convertir el objeto de la clase Double en un tipo primitivo double mediante la función doubleValue String str="12.35 "; double numero=Double.valueOf(str).doubleValue(); Se puede hacer el mismo procedimiento para convertir un string a número entero String str="12"; int numero=Integer.valueOf(str).intValue(); El siguiente programa muestra el uso de la clase String. public class Test { public static void main(String[] args) { String str1 = "La provincia de Santander es muy bonita"; String str2 = "La provincia de SANTANDER es muy bonita"; String strtemp; int resultado; resultado = str1.compareToIgnoreCase(str2); if( resultado > 0 ) strtemp = "mayor que "; else if( resultado < 0 ) strtemp = "menor que "; else
  • 58. Excelencia Académica 62 strtemp = "igual a "; System.out.println( str1 + " es " + strtemp + str2 ); } } Para escribir una aplicación se escribe primero con el editor de textos el programa y después se compila. Si no existen errores se ejecuta el programa el que se guarda automáticamente en el disco con el nombre de la clase principal. La clase math contiene métodos que permite la manipulación de números incluyendo funciones para convertir y manejar funciones matemáticas con datos numéricos. Existen clases para realizar el tratamiento de caracteres y cadenas de textos con las cuales se realiza las conversiones de datos String y otros. Fco. Javier Ceballos Curso de Programación Java 2 Alfaomega-Rama, España 2,003 Segunda Edición Luis Joyanes Aguilar Programación en Java Prentice Hall, España José Pérez Mayor Programación en Java Paso a Paso Thomson, España 2,003 Deitel y Deitel Curso de Programación en Java Prentice Hall, España, 1,995 En el siguiente UNIDAD TEMÁTICA se estudiarán las estructuras de control que nos permitirán escribir programas más complejos y completos
  • 59. Excelencia Académica 63 Se debe tener presente que cuando se quiere utilizar los métodos de una clase se deben importar la clase respectiva al programa que se está construyendo. Existen métodos que sirven para realizar conversiones de datos y también existen métodos que sirven para realizar comparaciones y generan un resultado lógico o boleano. Escribir un programa que permita el ingreso de un número entero tipo byte, un número entero tipo int, un número entero tipo long, un número real tipo float y un número real tipo double y que se conviertan a cadenas de texto y se muestre por pantalla una cadena con todos los número ingresados. Manejar en forma adecuada las clases math, Carácter, String, Integer, Flota y sus respectivos métodos.
  • 60. Excelencia Académica 64 Nº 4 Nombre__________________________________________________________________ Apellidos_______________________________________Fecha _____________________ Ciudad ______________________________Semestre_____________________________ 1.- Escribir un programa que solicite un número y que después muestre el número con su parte decimal redondeado a tres dígitos. 2.- Escribir un programa que solicite un número, que solicite la cantidad de dígitos de la parte real válidos y que muestre el número con la cantidad de dígitos de la parte real indicado y redondeado. 3.- Escribir un programa que soliste una cadena de texto y que después solicite otra cadena de texto y que después por pantalla nos diga en que posición de la primera cadena se encuentra la segunda cadena. 4.- Escribir un programa que solicite un número entero de hasta tres dígitos y que después muestre por pantalla cada uno de los dígitos que tiene el número.
  • 61. Excelencia Académica 65 ESTRUCTURAS DE CONTROL Durante un programa existen acciones que se van a ejecutar bajo ciertas condiciones de control o que se van a repetir un número determinado de veces. Por ejemplo, leer 3 caracteres de un flujo de entrada in se codificaría o leer 20 números enteros, etc. Estructuras de Control El lenguaje Java soporta las siguientes estructuras de control: Estructura Sentencia Toma de decision if-else, switch-case Bucle for, while, do-while Otras break, continue, label:, return, goto Aunque goto es una palabra reservada, actualmente el lenguaje Java no soporta la sentencia goto. Se puede utilizar las sentencias de bifurcación en su lugar. Estructura Condicional If y Swicht La sentencia if-else de Java permite que los programas puedan ejecutar distintos conjuntos de sentencias según algún criterio o condición. La sintaxis de la sentencia if-else es: if ( condición ) Bloque de código a ejecutar si la condición es verdadera else Bloque de código a ejecutar si la condición es falsa La parte del else es opcional, y un bloque de código puede ser simplemente la sentencia vacía ; para representar que en ese caso no se ha de ejecutar nada. Si se tiene una sentencia if sin su respectiva parte else, se dice que se tiene una estructura condicional simple, mientras que si se usa la sentencia else se dice que se tiene una estructura condicional múltiple. Supongamos que un programa debe realizar diferentes acciones dependiendo de si el usuario oprime el botón aceptar o el botón cancelar en una ventana de dialogo. Nuestro programa puede realizar esto usando la sentencia if - else: // La respuesta es Aceptar o Cancelar
  • 62. Excelencia Académica 66 if (respuesta == Aceptar) { // código para realizar la acción Aceptar System.out.println( "Su peticion esta siendo atendida" ); } else { // código para realizar la acción Cancelar System.out.println( "Cancelando accion" ); } Se pueden anidar expresiones if-else, para poder implementar aquellos casos con múltiples acciones. Esto es lo que se suele denominar como sentencias else if. Por ejemplo, supongamos que se desea escribir un programa que clasifique según el contenido de una variable valor, asigne una letra a una variable clasificacion: A para un valor de 100 a 91, B de 90 a 81, C para 80 a 71 y F si no es ninguno de los anteriores: int valor; char clasificacion; if (valor > 90) {clasificacion='A';} else if (valor > 80) {clasificacion='B';} else if (valor > 70) {clasificacion='C';} else {clasificacion='F';} Se pueden escribir los if en las mismas líneas que los else, pero desde se recomienda utilizar la forma indentada (como se ha podido ver en el ejemplo), pues es más clara para el lector. Este sistema de programación (else if) no es demasiado recomendable, y por ello el lenguaje Java incluye la sentencia switch, que veremos a continuación, para dirigir el flujo de control de variables con múltiples valores. Sentencia Switch Mediante la sentencia switch se puede seleccionar entre varias sentencias según el valor de cierta expresión. La forma general de switch es la siguiente: switch ( expresionMultivalor ) { case valor1 : conjuntoDeSentencias1; break; case valor2 : conjuntoDeSentencias2; break; case valor3: conjuntoDeSentencias3; break;
  • 63. Excelencia Académica 67 . . . case valorn: conjuntoDeSentenciasn; break; default: conjuntoDeSentenciasdef; break; } // fin de la sentencia switch La sentencia switch evalúa la expresiónMultivalor y ejecuta el conjuntoDeSentenciasX que aparece junto a la cláusula case cuyo valor corresponda con el de la expresiónMultivalor. Cada sentencia case debe ser única y el valor que evalúa debe ser del mismo tipo que el devuelto por la expresiónMultivalor de la sentencia switch. Las sentencias break que aparecen tras cada conjuntoDeSentencias provocan que el control salga del switch y continúe con la siguiente instrucción al switch. Las sentencias break son necesarias porque sin ellas se ejecutarían secuencialmente las sentencias case siguientes. Existen ciertas situaciones en las que se desea ejecutar secuencialmente algunas o todas las sentencias case, para lo que habrá que eliminar algúnos break. Finalmente, se puede usar la sentencia default para manejar los valores que no son explícitamente contemplados por alguna de las sentencias case. Su uso es altamente recomendado. Por ejemplo, supongamos un programa con una variable entera meses cuyo valor indica el mes actual, y se desea imprimir el nombre del mes en que estemos. Se puede utilizar la sentencia switch para realizar esta operación: int meses; switch ( meses ){ case 1: System.out.println( "Enero" ); break; case 2: System.out.println( "Febrero" ); break; case 3: System.out.println( "Marzo" ); break; //Demás meses // . . . case 12: System.out.println( "Diciembre" ); break; default: System.out.println( "Mes no valido" ); break; } Por supuesto, se puede implementar esta estructura como una sentencia if else if: int meses; if ( meses == 1 ) { System.out.println( "Enero" ); } else if ( meses == 2 ) {
  • 64. Excelencia Académica 68 System.out.println( "Febrero" ); } // Y así para los demás meses El decidir si usar la sentencia if o switch depende del criterio de cada caso. Se puede decidir cuál usar basándonos en la legibilidad, aunque se recomienda utilizar switch para sentencias con más de tres o cuatro posibilidades. EJEMPLO 1 Escribir un programa que solicite un número entero y muestre por pantalla un mensaje indicando si el número que se ha ingresado es par, impar o es cero. import java.io.*; public class ParImpar { public static void main(String[] args) throws IOException { InputStreamReader isr = new InputStreamReader(System.in); BufferedReader flujoE = new BufferedReader(isr); int N; System.out.print("Ingrese un número entero : "); N=Integer.parseInt(flujoE.readLine()); //verificacion si es par o impar if (N==0) System.out.println("El número es cero"); else if (N%2==0) System.out.println("El número es par"); else System.out.println("El número es impar"); } } EJEMPLO 2 Escribir un programa que solicite un carácter y que muestre el carácter ingresad, su código ASCII y si este código es par o impar. import java.io.*; public class Caracter {
  • 65. Excelencia Académica 69 public static void main(String[] args) throws IOException { InputStreamReader isr = new InputStreamReader(System.in); BufferedReader flujoE = new BufferedReader(isr); int N; System.out.print("Ingrese un caracter y presione Enter : "); N=System.in.read(); System.out.print("EL caracter es "+(char)N+" su código ASCII es "+N); //verificacion si el código es par o impar if (N%2==0) System.out.println(" y es par"); else System.out.println(" y es impar"); } } 5.1 1.- Ingresar un número cualquiera e informar si es o no es mayor de 100. 2.- Ingresar un número entero cualquiera e informar si es o no es múltiplo de 4 ( recordar el operador modulo o residuo (%), analizado en el tema de operadores aritméticos). 3.- Ingresar los cinco datos más importantes de un Empleado, incluyendo el sueldo diario y los días trabajados desplegarle su cheque semanal solo si ganó más de $500.00 en la semana, en caso contrario desplegarle un bono de despensa semanal de $150.00. 4.- Ingresar los datos más importantes de un estudiante incluyendo tres calificaciones construir una boleta de calificaciones si el estudiante es de la carrera de medicina, en caso contrario construir una pantalla más bonita todavía que despliega un oficio citando a los padres del estudiante a una platica amistosa con los maestros de la universidad. 5.- Ingresar los datos más importantes de un producto cualquiera, incluyendo cantidad, precio, etc. desplegar una orden de compra, solo si el producto es de origen nacional, en caso contrario no hacer nada. Ciclos Repetitivos
  • 66. Excelencia Académica 70 Los ciclos repetitivos, llamados también ciclos, anillos o lazos se utilizan como una estructura que repite una instrucción o grupo de instrucciones bajo una condición. a) Bucle while El bucle while sirve para realizar una acción sucesivamente mientras se cumpla una determinada condición. La forma general del bucle while es la siguiente: while ( condición ) { sentencias que se repiten; }; Las sentencias se ejecutan mientras la condición tenga un valor verdadero, cuando la condición es falsa se termina el ciclo repetitivo y se pasa a la siguiente sentencia. Se utiliza, por ejemplo para estar en un bucle del que no hay que salir hasta que no se cumpla una determinada condición. Por ejemplo, multiplicar un número por 2 hasta que sea mayor que 100: int i = 1; while ( i <= 100 ) { i = i * 2; } Con él se podrían eliminar los bucles do-while y for por ser extensioones de éste, pero que se incluyen en el lenguaje para facilitar la programación. b) Bucle do-while El bucle do-while es similar al bucle while, pero en el bucle while la expresión se evalúa al principio del bucle y en el bucle do-while la evaluación se realiza al final. La forma general del bucle do-while es la siguiente: do { sentencias que se repiten; } while ( condición ); La sentencia do-while es el constructor de bucles menos utilizado en la programación, pero tiene sus usos, cuando el bucle deba ser ejecutado por lo menos una vez. En esta estructura el bucle se repite si la condición es verdadera y se termina cuando la condición es falsa. Por ejemplo, cuando se lee información de un archivo, se sabe que siempre se debe leer por lo menos un carácter: