Estructuras de Control En Java Prof: Ing Howard Pernía.
-
Upload
luis-medina-velez -
Category
Documents
-
view
32 -
download
1
Transcript of Estructuras de Control En Java Prof: Ing Howard Pernía.
LENGUAJE DE
PROGRAMACIÓN II
(ESTRUCTURA DEL LENGUAJE JAVA)
ING. HOWARD PERNÍA
Contenido y Objetivos
Es necesario que el estudiante sea capaz de:
• Poseer conocimientos básicos de programación
• Habilidad para ejecutar comandos utilizando interfaces de líneas de
comandos.
– Conocer los conocimientos básicos de la Orientación a Objetos
– Manejar los fundamentos del lenguaje JAVA
– Aprender la sintaxis del lenguaje JAVA
– Desarrollar aplicaciones usando el lenguaje JAVA
– Desarrollar interacciones GUI avanzadas
– Profundizar en el área de conocimientos de la Programación Orientada a Objetos
JAVA
– Manejar los procesos de declaraciones y expresiones JAVA
– Manejar eventos de teclado y mouse.
Introducción
• Java fue desarrollado por Sun Microsystem a principios de los 90.
• Esta basado en C y C++.
• Es un Lenguaje Orientado a Objetos
• Desarrollo de un Lenguaje Multiplataforma
En http://www.java.com/es/ puedes encontrar las últimas versiones para descargar en diversos paquetes y
para diferentes sistemas operativos.
En la actualidad, el auge y aceptación que se tiene por las computadoras es muy grande, éstas son usadas para
facilitar las labores y tareas más diversas. Las computadoras existen gracias a que el hombre inventó los
microprocesadores que forman parte fundamental de las mismas. En un futuro se hace casi impensable que un
artefacto eléctrico no posea un microprocesador que lo controle y haga más fácil su manejo.
Al notar esto, en 1991 Sun Microsistems patrocinó un proyecto interno llamado “Green” el cual buscaba el desarrollo
de un lenguaje basado en C++ que permitiera programar los mas diversos aparatos eléctricos. Su fundador, James
Gosling le dio el nombre de OAK. Posteriormente descubrió que existía otro lenguaje con el mismo nombre, y no fue
hasta que un grupo de gente visito una cafetería que se sugirió el nombre de JAVA (una variedad de café).
El proyecto enfrentó fuertes dificultades debido a que el mercado de electrodomésticos inteligentes no se desarrollo
rápidamente y Sun enfrentaba problemas económicos pero gracias a la creciente popularidad de la World Wide Web y
a que Java era un lenguaje que permitía agregar contenido dinámico a las paginas web, el proyecto tomo nueva vida.
En 1995 Java es anunciado en una conferencia que genero un gran interés en la comunidad de negocios gracias al
interés en la World Wide Web.
Actualmente Java se utiliza para desarrollar aplicaciones de gran escala, para proporcionar aplicaciones para
dispositivos domésticos (teléfonos celulares, microondas, etc.) y para múltiples propósitos
Breve Historia
Entre las características más destacadas tenemos
Simple: Es un lenguaje sencillo de aprender con sintaxis parecida al C++.
Orientado a Objetos: Todo, excepto los tipos fundamentales son objetos.
Distribuido: Esta orientado al trabajo en red, soporta diversos protocolos (TCP/IP, UDP, HTTP,
etc.) y su uso es muy sencillo.
Robusto: El sistema Run-Time maneja la memoria y no el programador.
Seguro: Java no permite que ninguna aplicación pueda dañar la maquina
Portable: Java es independiente de las plataformas, gracias a que interactúa con el sistema que
corre sobre el computador adaptando nuestra aplicación a la plataforma.
Multi-Hilo: Java permite la ejecución de multi-hilos, lo que permite mayor rendimiento en
ambientes interactivos.
Características
En Perl 5, se añadieron características para soportar estructuras de datos complejas, funciones de
primer orden (p. e. Clausuras como valores) y un modelo de programación orientada a objetos. Estos
incluyen referencias, paquetes y una ejecución de métodos basada en clases y la introducción de
variables de ámbito léxico, que hizo mas fácil escribir código robusto (junto con el pragma strict). Una
característica principal introducida en Perl 5 fue la habilidad de empaquetar código reutilizable como
módulos. Larry Wall indico más adelante que “la intención del sistema de módulos de Perl 5 era
apoyar el crecimiento de la cultura Perl en vez del núcleo de Perl”.
Todas las versiones de Perl hacen el tipado automático de datos y la gestión de memoria. El
interprete conoce el tipo y requerimientos de almacenamiento de cada objeto en el programa; reserva
y libera espacio para ellos según sea necesario. Las conversiones legales de tipo se hacen de forma
automática en tiempo de ejecución; las conversiones ilegales son consideradas errores fatales.
Características
De manera resumida se puede decir que algunas de las características de Perl más importantes son
las siguientes:
Soporta programación orientada a objetos
Soporta programación procedural
Se ejecuta en el lado servidor y no en el lado cliente
Posee integración con bases de datos como Oracle, PostgreSQL, MySQL, Sybase y otras.
Trabaja con HTML, XML y otros lenguajes de tipo mark-up.
Es ampliable a través de módulos Existen más de 500 módulos disponibles en CPAN
El interprete de Perl puede ser embebido en otros sistemas (programas de otro lenguaje). Perl
deriva ampliamente de lenguaje C
Características
Contenido:
Introducción a la Programación Orientada a Objetos
¿Que es un Objeto?
¿Que es una Clase?
Conceptos de la Orientación a Objetos.
Objetivos
Introducir al alumno sobre algunos aspectos importantes de la Programación Orientada a Objetos
Fundamentos de Programación Orientada a Objetos
(POO)
Principios y conceptos básicos de la Programación Orientada a Objetos (POO). Se deben tener claros
los fundamentos de la POO para poder utilizar y comprender de manera perfecta el lenguaje Java.
Los principios de la POO nacen en los años 60 y tienen como objetivo primordial facilitar el desarrollo
y mantenimiento de software.
Desde ese entonces han surgido un sin numero de Lenguajes Orientados a Objetos, entre ellos:
Eiffel, Smalk Talk, C++, Java. Una de las mas grandes ventajas de la Orientación a Objetos es que
permite la re-utilización de código, basándose en sus principios básicos como son la Herencia,
parametrización, composición y también basándose en librerías Con la Programación Orientada a
Objetos podemos probar versiones mucho antes que lo que se conseguía de manera tradicional
Fundamentos de Programación Orientada a Objetos
(POO)
¿Que es un Objeto?
Un objeto es cualquier cosa a la vista y que afecta nuestros sentidos. Si enfocamos este concepto a
la informática diríamos que un Objeto posee en si mismo variables y métodos que definen todas sus
características y como interactuar con ellas.
Cualquier Objeto de la vida real se puede ver como un objeto informático Un ejemplo seria:
Fundamentos de Programación Orientada a Objetos
(POO)
Es una representación de la
estructura y comportamiento de un
objeto
Vida Real Diseño OO
Puerta
Largo
Ancho
Color
Abrir()
Cerrar()
¿Que es un Clase?
Es una representación de la Estructura y comportamiento de un Objeto, puede verse como un patrón
para definir los atributos y comportamientos para un tipo de objetos. Los Objetos de una misma clase
son idénticos en estructura y comportamiento, pero todos ellos son únicos entre si, Ejemplo:
En este ejemplo vemos dos puertas que tienen las mismas características de la Clase “Puerta”, pero
entre ellas son únicas por que son objetos diferentes.
Fundamentos de Programación Orientada a Objetos
(POO)
Clase
Puerta
Una instancia es el concepto que se le da al objeto perteneciente a una clase. En fin, una clase
comprende la estructura y comportamiento de un tipo particular de objetos, mientras que una
instancia (objeto) pertenece a una clase (tipo de objeto) pero entre instancias son únicas
Fundamentos de Programación Orientada a Objetos
(POO)
Class nombre_clase {
Int nombre_variable;
}
Conceptos de la Orientación a Objetos: cualquier lenguaje orientado a objetos debe emplear estos
conceptos básicos:
Abstracción: Consiste en la generalización de los atributos y comportamiento de un determinado
grupo de objetos. La clave de la programación Orientada a Objetos consiste en agrupar las
características y comportamientos comunes de un grupo de objetos en una sola clase. Ejemplo:
¿Qué características semejantes poseen todos los automóviles? Todos tienen una marca, un color,
frenan, retroceden, entre otros.
Encapsulamiento u ocultamiento: Consiste en separar la parte externa de la interna de una
clase, es decir, la parte que es accesible del objeto por otros objetos y la parte que permanece
oculta a los otros objetos. Por ejemplo: la radio de un automóvil encapsula todos los atributos y
métodos que permite al conductor sintonizar una emisora, el conductor no sabe que componentes
están dentro del radio. Todos los componentes están ocultos para nosotros y solo accesamos a los
métodos que nos permiten utilizar el radio.
Fundamentos de Programación Orientada a Objetos
(POO)
Conceptos de la Orientación a Objetos: cualquier lenguaje orientado a objetos debe emplear estos
conceptos básicos:
Polimorfismo: permite implementar múltiples formas de un mismo método, ejecutando diferentes
acciones para un mismo mensaje.
Herencia: consiste en crear nuevas clases a partir de las ya existentes. Las nuevas clases
heredan las características de la clase padre y además pueden añadírseles nuevas características.
La herencia permite la reutilización de código.
Fundamentos de Programación Orientada a Objetos
(POO)
Comentarios:
Los Comentarios ayudan a los programadores a documentar sus codigos y lo hacen mas legibles
para otros y ellos mismos.
//comentario
/*
Comentario
De varias lineas
*/
/**
Comentario para la documentación
*/
Sintaxis en Java
El compilador de Java ignora estos comentarios de manera que la computadora no hace nada cuando
este se ejecuta. Existen tres formas de insertar comentarios en Java:
// Comentario de Una Línea
/* Comentario de una o
mas líneas*/
/** Comentarios para documentar usando javadoc*/
Sintaxis en Java
Identificadores:
Son los nombres que se les da a las variables, clases y métodos. Se deben de tener presente las
siguientes reglas:
• Deben de empezar por una letra o subrayado.
• Después del primer carácter se pueden usar números
• Distingue las mayúsculas de las minúsculas
• No se debe usar keyword (palabras reservadas del lenguaje)
Temp_media, promedio2, _cuenta //Correcto
Temp-media, 2promedio, cuenta/ciclo //incorrecto
Las palabras reservadas son de uso exclusivo del lenguaje, algunas de ellas son: for. While, do,
throw, static, private, public, entre otras.
Sintaxis en Java
Operadores:
Los operadores son las herramientas que nos permite manipular las variables. Con ellos podemos comparar, sumar,
restar, incrementar, asignar, entre otros, valores a las variables. Podemos dividir a los operadores según su tipo en:
• Operadores Aritméticos: estos nos permiten realizar operaciones matemáticas.
• Operadores Lógicos y Booleanos: Los operadores lógicos y booleanos nos permiten manipular y hacer
operaciones lógicas.
• Operadores Relacionales: Se utilizan generalmente para comparar dos variables y ver si cumplen o no una
condición.
• Operadores de Asignación: Estos toman el valor de una expresión o variable y se le asigna a otra
NOTA: En la tabla se puede apreciar que es una forma abreviada de escribir una expresión de suma. También existen
expresiones de asignación para los operando que se han visto, por ejemplo: *=, %=, &&=, etc.
Sintaxis en Java
Operación en Java Operador Ejemplo Lo que hace
Asignar valor a variable = I = 2 Asigna el valor 2 a i
Suma y asigna valor a
variable
+= K += J Suma k + j y el resultado lo
asigna a k
Resta y asigna valor a
variable
-= J -= r Resta j – r y el resultado lo
asigna a j
Tipos de Variables:
• Tipos de Datos y Variables: Una variable es la unidad básica de almacenamiento de datos. En el
lenguaje Java, cualquier variable que definamos debe de tener un tipo. Una variable para poder
ser utilizada debe de ser inicializada sino en la compilación se presentan errores. Se pueden
definir dos tipos de datos genéricos a los cuales pueden pertenecer estas variables:
Los tipos Primitivos
Los tipos complejos o clases
Existen ocho tipos de datos primitivos, ellos son:
Números enteros: int, byte, short, long.
Números reales: float, double.
Carácter: char
Lógico: boolean.
Sintaxis en Java
• Datos primitivos enteros: Estos representan valores enteros y de acuerdo a su definición
abarcan un conjunto de números determinados.
byte: Almacena en memoria un numero de 8 bits por lo tanto abarca el conjunto de números
que va desde el -127 hasta el 127
short: Usa 16 bits para almacenar un dato, lo que le permite abarcar los números desde el -
32768 hasta 32768.
int. Dispone de 32 bits para almacenar los datos y cubre los números desde el -2147483468
hasta el -2147483468.
long. Dispone de 64 bits para almacenar un dato.
Sintaxis en Java
• Datos primitivos Reales: existen dos tipos para representar números reales y de acuerdo a la plataforma,
dependerá la precisión de cada uno de ellos.
float. Usa 32 bits para almacenar un numero.
Double. Usa 64 bits para almacenar un dato.
• Datos primitivos de carácter:
char. Posee un tamaño de 2 bytes y representa un carácter UNICODE. Sus posibles valores son un carácter
entre comillas simples o caracteres especiales por ejemplo: 'a', '\n', '\t‘, etc.
• Datos primitivos de lógicos:
boolean. Sus dos posibles valores son true o false. Su valor por defecto es false.
• Diferencias entre variables primitivas y complejas: Una variable del tipo primitivo contiene el dato directamente
mientras que una variable del tipo complejo es una referencia que apunta a la región en memoria donde esta el
objeto.
Sintaxis en Java
Acumuladores y Contadores Un contador se usa cuando los incrementos (o decrementos) son periódicos, es decir si vas de 1 en 1, de 3
en 3. Usas el acumulador cuando los incrementos no son periódicos, es decir cuando incrementas 10 y luego
30 y luego 15 y luego -2.
Considera el acertijo clásico como ejemplo (no de programación):
Un autobús sale del terminal con 9 pasajeros, en la primera parada suben 7 personas y bajan 3, vuelven
hacer otra parada, bajan 2 personas y suben 5, nuevamente vuelve a parar, suben 6 personas y bajan 8.
En este caso usas un contador para saber cuantas paradas hizo el autobús y utilizas un acumulador para
saber cuantas personas hay al final en el.
Un acumulador: solo almacena las funciones que realizas.
Un Contador: solo es el medidor y el razonador de las entradas y salidas de las expresiones y operadores
Mas….. En Estructuras de Control (Ciclos)
Uso de Variables: para poder usar una variable en el lenguaje Java, primero debemos crearla e inicializarla, sino se
hace ninguno de estos pasos se presentan errores en la compilación. Para declarar una variable se hace una
sentencia compuesta por un tipo y un identificador de la siguiente forma:
Tipo identificador;
Int i; // Declara una variable llamada i del tipo entero
Float j=1.1; // Declara la variable j del tipo real y se inicializa con un valor de 1.1 int a, b, c
a, b, c; // Declara 3 variables enteras del tipo int.
Sintaxis en Java
La estructura básica de un programa en java es la siguiente:
// Declaración de clase
Public class identificador {
// declaración de variables
public static void main (String [ ] args) {
//Método que empieza la ejecución del programa
}
}
Estas son las principales reglas de sintaxis y las operaciones básicas para manipular variables.
Sintaxis en Java (Mi primer programa en Java)
/**Mi primer programa en Java
* Este es un comentario.
* Este programa declara unas variables primitivas y las muestra
* en pantalla
* */
public class PrimerPrograma {
//El método Main empieza la ejecución de la aplicación
public static void main(String[] args) {
int i=0; //Declara variable entera
int j=10; //Declara variable entera llamada j de valor 10
char letra='a';
double pi=3.1416;
boolean logico=true;
//Intrucciones para mostrar en pantalla las variables
System.out.println("El valor de i es: " + i);
System.out.println("El valor de j es: " + j);
System.out.println("El valor de letra es: " + letra);
System.out.println("El valor de pi es: " + pi);
System.out.println("El valor de lógico es: " + lógico);
} // Fin del método Main
} // Fin de la Clase PrimerPrograma
Sintaxis en Java (Mi primer programa en Java)
Sintaxis en Java (Mi primer programa en Java)
Desde la línea 1 a la 5 tenemos un comentario que encabeza nuestro programa. Generalmente este comentario
contiene lo que hace el programa, quien lo hizo y la versión entre otras cosas. . Las líneas 6 y 7 son líneas en blanco
para facilitar la lectura del programa. La línea 8
Public class PrimerPrograma {
Comienza la declaración de clase para la clase PrimerPrograma. Todo programa de Java debe de consistir de al
menos una declaración de clase que el programador debe definir.
La palabra class es una palabra reservada para la declaración de una clase. Por convención, todos los nombres de
clases deben empezar en letra mayúscula, y la primera letra de las siguientes,
por ejemplo: NombreDeClase.
El nombre PrimerPrograma es un identificador.
Las llaves “{}” indican el cuerpo de declaración bien sea de una clase, método o algún otro bloque de programación.
En el ejemplo todo lo que este entre la llave de la línea 8 y la llave de la línea 27 pertenece al cuerpo de la clase
PrimerPrograma
La línea 9 es un espacio en blanco para mejorar la legibilidad del programa. La línea 10 es un comentario que
indica el propósito del método main. La línea 11
Public static void main( String[ ] args) {
Sintaxis en Java (Mi primer programa en Java)
Es el punto de inicio de toda aplicación Java. Los paréntesis después de main indican que este es un método. Una
declaración de clase de java generalmente posee muchos métodos pero solo uno puede llamarse main y se debe de
definir como se muestra en la línea 11. los métodos pueden devolver información una vez que han culminado su
ejecución, de no ser este el caso en su declaración deben de contener la palabra void que es una palabra reservada
del lenguaje que indica que el método no devuelve información. La llave que abre indica el inicio del cuerpo del método
y la llave derecha “}” en la línea 26 indica el fin del cuerpo del método.
Desde la línea 11 hasta la 17 se declaran e inicializan algunas variables. En la línea 11 se declara una variable que
guarda un dato entero y le asignamos el valor de 0. En la línea 13 se declara otra variable de tipo entero llamada j y se
le asigna el valor de 10. en la línea 15 se declara una variable de tipo carácter y se le asigna el valor ‘a’. Al hacer la
asignación de letras a los tipos char se debe colocar la letra entre comillas simples. En la línea 16 se declara una
variable llamada pi del tipo real y se le asigna el valor de 3.1416. en la línea 17 se declara una variable llamada lógico
y se le asigna el valor de true.
La línea 20
System.out.printl(“El valor de i es: ” + i);
Le indica a la computadora que imprima en la pantalla la cadena entre comillas dobles y además que muestre el valor
de i mediante el operador +
Sintaxis en Java
System.out es un objeto genérico que se incluye por defecto conocido como objeto de salida estándar. Se utiliza el
método println que muestra una cadena de caracteres en la ventana de comandos del sistema operativo donde se
ejecuta el programa. La cadena de caracteres es lo que esta entre los paréntesis del método. Gracias al operador más
hemos podido concatenar la cadena entre paréntesis con el valor de la variable i. las siguientes instrucciones hacen lo
mismo para las otras variables.
Luego de haber guardado el programa con el mismo nombre de la clase y extensión .java, desde la línea de comando
nos vamos al directorio donde se encuentra el programa y se ejecuta el comando
Javac PrimerPrograma.java
Si el programa no contiene errores se genera un archivo llamado PrimerPrograma.class el cual contiene los códigos
de byte de java que representan la aplicación. Estos códigos de byte son interpretados por el interprete Java cuando
se indique que debe ejecutar la aplicación.
Sintaxis en Java
Para ejecutar la aplicación se escribe:
Java PrimerPrograma
Con los que el interprete de Java carga el archivo .class y empieza la ejecución del programa. La salida de esta
aplicación se muestra a continuación:
El valor de i es: 0
El valor de j es: 10
El valor de letra es: a
El valor de pi es: 3.1416
El valor de lógico es: true
RESUMEN: Se debe de crear e inicializar una variable antes de poder utilizarla
Nota: mas adelante se hablara de las palabras reservadas public y static
Sintaxis en Java
bool, false, true
Sinopsis
La palabra-clave bool declara un tipo especial de variable, denominada booleana que solo puede tener dos valores:
cierto y falso.
Nota: por razón de los valores que pueden adoptar (cierto/falso), a estas variables también se las denomina variables
lógicas.
Sintaxis
bool <identificador>;
Descripción
Evidentemente el tipo bool está especialmente adaptado a para realizar comprobaciones lógicas; de hecho, todo el
álgebra de Boole se basa justamente en el uso de este tipo de variables de solo dos valores mutuamente excluyentes.
Por su parte, las palabras clave false y true son literales que tienen valores predefinidos (se puede considerar que son
objetos de tipo booleano de valor constante predefinido). false tiene el valor falso (numéricamente es cero), true tiene
el valor cierto (numéricamente es uno). Estos literales booleanos son Rvalues; no se les puede hacer una asignación
(no pueden estar a la izquierda de una asignación).
• bool val = false; // declara val variable Booleana y la inicia
• val = true; // ahora se cambia su valor (nueva asignación)
• true = 0; // Error!!
Bool - Boolean
Conversiones entre Tipos de Datos
La sintaxis de la operación Cast es la siguiente:
(tipo) variable o dato
tipo, especifica el tipo al que se quiere convertir.
Variable o dato, es el valor que se quiere convertir.
En Java es común que se requiera en un programa convertir de un tipo de datos a otro. Entre los datos numéricos
las conversiones se hacen de forma automática cuando operaciones que involucran varios tipos de datos se efectúan,
dando como resultado la solución en el tipo de dato que ofrezca la mayor precisión. La jerarquía de las conversiones
de mayor a menor es:
double > float > long > int > short > byte
Es posible convertir un dato de una jerarquía superior a una inferior pero hay un riesgo de perder datos en el
cambio. Este tipo de operaciones se llama Cast y para ejecutar una conversión de tipo, en la sentencia se debe de
anteponer el tipo al que se desea convertir entre paréntesis antes de la operación, por ejemplo:
K = (int) 8.555; // convierte 8.555 a un numero entero.
Sintaxis en Java
En este ejemplo se convierte el numero 8.555 el cual es de tipo doublé a un tipo entero que se guarda en la variable
k que debe de ser de tipo entero, o de lo contrario se produce un error de compilación por incompatibilidad entre tipos.
En la conversión se pierde la parte decimal del numero, por esto al realizar conversiones de este tipo se deben de
tener en cuenta estas premisas.
Aplicación Practica: Realice un programa que permita ver como funcionan los operadores, distinguiremos la
conversión entre los tipos y se tomaran en cuenta un poco el uso de variables. En esta ocasión solo se utilizaran el uso
de operadores aritméticos.
Los requerimientos para la aplicación son los siguientes:
Para realizar estos cálculos se debe realizar el siguiente programa
Sintaxis en Java
En un salón de clases de 40 alumnos, se realizó una prueba dando como resultado que 27 alumnos
aprobaron el examen. Se necesita un programa que muestre el porcentaje de alumnos reprobados y
aprobados en el salón.
Sintaxis en Java
La salida del programa es:
La variable del tipo float tiene el valor de: 67.0
El % de alumnos aprobados es: 67.5
El % de alumnos reprobados es: 32.5
El % de aprobados convertido a enteros es: 67
El % de reprobados convertido a enteros: 32
Después de haber solventado los requerimientos con el programa antes descrito. Primero se declara la clase y el
método main como se vio en el primer programa. En la línea 5 y 6 declaramos los datos que conocemos que son la
cantidad de alumnos y los alumnos aprobados. Se inicializan estas variable de tipo entero con los valores conocidos.
En la línea 9 se declara una variable entera sin inicializar que contendrá la cantidad de alumnos reprobado que lleva
por nombre reprobados.
En la línea 10 y 11 se declaran dos variables del tipo float que contendrán el porcentaje de alumnos aprobados y
reprobados respectivamente.
En la línea 15 restamos el numero de alumnos menos la cantidad de alumnos aprobados para obtener la cantidad
de alumnos reprobados haciendo uso del operador menos ( - ), el resultado de esta operación es asignado a la
variable reprobados.
Sintaxis en Java
Se realiza esta operación para obtener el porcentaje de alumnos aprobados. En esta operación ocurre una
conversión implícita, las variables aprobado y alumnos son del tipo int (enteros), por lo tanto el resultado de esta
operación es de tipo int, este es convertido automáticamente por java en un valor tipo float para que pueda ser
asignado a la variable aprox100. Al ver el contenido de la variable aprox100 luego de esta operación, se observa que
esta contiene solo la parte entera de nuestro resultado, debido a que la división era solo de números enteros, esta
devuelve un numero entero y omite los decimales.
En la línea 24,
aprox100 = (float) aprobado * 100 / alumnos;
Para solventar el truncamiento del resultado, se opta por transformar el valor de la variable aprobado por un valor
del tipo entero para esta operación, el máximo tipo en la jerarquía de la operación será un tipo float y el resultado de la
operación incluirá los decimales.
En la línea 27 se realiza lo mismo para obtener el porcentaje de alumnos reprobados.
Sintaxis en Java
Luego en las líneas desde la 29 hasta la 32 se muestran los resultados de ejecutar estas operaciones. Java permite
que una instrucción se escriba en dos líneas, siempre y cuando se finalice una cadena y en la siguiente línea se
empiece con el signo + como se ve en las líneas 29 y 30.
Desde la línea 33 hasta la 36 se muestran bien los valores de los porcentajes de alumnos reprobados y aprobados,
pero esta ves se han convertido estos valores del tipo float al tipo int pudiendo notar que se pierde la parte decimal al
realizar la conversión.
Sintaxis en Java
Introducción
Estructura de Control
Estructura de Selección Simple IF
Estructura de Selección doble if..else
Estructura de Repetición WHILE
Estructura de Repetición FOR
Estructura de Repetición Do..While
Instrucciones de ruptura break, continuo
Estructura de selección múltiple
Ejemplos Prácticos
Control de Flujo en Java
Introducción
Para realizar un programa que de solución a un problema es necesario tener una comprensión detallada del
problema, además de una metodología cuidadosamente detallada para resolver el mismo. Para escribir un programa,
es necesario comprender los bloques de construcción disponibles y como se ejecutan las instrucciones. Para resolver
un problema, es necesario ejecutar una serie de acciones en un orden especifico, a continuación veremos las
herramientas básicas que nos permiten llevar un control del orden en que se ejecutaran nuestras instrucciones. Estas
herramientas son comunes a la mayoría de los lenguajes de programación.
Control de Flujo en Java
Permite al programador especificar que instrucción
ejecutar.
Estructura de Control
Generalmente, en un programa se ejecutan las instrucciones de forma secuencial, pero que sucede cuando la
siguiente instrucción que queremos que se ejecute no es la siguiente en la secuencia. Java dispone de varias
instrucciones para indicar que la siguiente instrucción a ejecutar, tal vez no sea la siguiente en la secuencia, a esto se
le conoce como transferencia de control.
Gracias a el trabajo de investigación de Bohm y Jacoponi fue demostrado que todos los programas pueden
escribirse en términos de tres estructuras de control:
Estructura de secuencia
Estructura de selección
Estructura de repetición
La estructura de secuencia esta integrada a Java, al menos que se indique lo contrario Java ejecuta las acciones
una después de otra.
Control de Flujo en Java
Java posee tres tipos de estructura de selección (if, if … else, swicth).
• La instrucción if es una estructura de selección simple ya que selecciona o ignora una sola condición.
• La instrucción if … else es una estructura de selección doble porque selecciona entre dos opciones diferentes.
• La instrucción switch es una estructura de selección múltiple ya que selecciona entre diversos grupos de
instrucciones.
Java también cuenta con tres estructuras de repetición (while, do … while, for) que permite que el programa ejecute
instrucciones repetidas mientras que una condición (llamada condición de continuación de ciclo) sea verdadera, las
instrucciones while y for ejecutan las acciones en sus cuerpos 0 ó mas veces, mientras que la instrucción do ejecuta
las instrucciones en su cuerpo al menos una vez.
Cada programa se forma combinando tantas estructuras de secuencia, selección y repetición como le sea
apropiado para el algoritmo que implemente el programa.
Control de Flujo en Java
Estructura de Selección Simple IF
Sintaxis:
if (condición) {
instrucción1;
instrucción2;
}
Las instrucciones dentro del cuerpo de la sentencia if solo se ejecutan si la condición entre paréntesis es verdadera.
Véase el siguiente ejemplo donde se requiere determinar imprimir un mensaje en la pantalla si un alumno tiene una
calificación mayor ó igual a 10.
If (nota >= 10) {
System.out.println(“Aprobado”);
}
Si la nota del estudiante es mayor o igual a 10, se imprime en la pantalla “Aprobado”, pero si la nota es menor a 10
la condición nota >= 10 pasa a ser falsa y las instrucciones entre las llaves o cuerpo del if no se ejecutan.
Control de Flujo en Java
Estructura de Selección Doble if … else
Sintaxis:
if (condición) {
instrucción1;
} else {
instrucción2;
}
Ejemplo:
If (nota >= 10) {
System.out.println(“Aprobado”);
}
else
{
System.out.println(“Reprobado”);
}
En este ejemplo si la nota es mayor a 10 se imprime en la pantalla el mensaje “aprobado”, pero si nota no es mayor
a 10 entonces se imprimirá en la pantalla “Reprobado”. Entonces si la condición es verdadera se ejecutan las
instrucciones dentro del cuerpo del if, pero si la condición es falsa, se ejecutan las instrucciones dentro del cuerpo del
else.
Control de Flujo en Java
Permite al programador ejecutar instrucciones repetidas veces,
siempre y cuando una condición de control sea verdadera.
Estructura de Repetición WHILE
Sintaxis:
while (condición) {
grupo de instrucciones;
}
Ejemplo:
int numero = 0;
while (numero <= 20)
{
System.out.println(“numero”);
numero = numero + 2;
}
Este fragmento de código muestra en pantalla los números de 0 al 20. Mientras la variable “numero” sea menor a
20, se ejecutaran las instrucciones dentro del cuerpo del while. Para evitar que el programa se ejecute un sin numero
de veces, se debe asegurar que la condición de evaluación del ciclo pueda ser falsa, esto se logra mediante la
instrucción:
numero = numero +2;
La cual suma 2 al contenido de la variable numero y el resultado se lo asigna a la variable numero,
incrementándose a si misma, tantas veces como se repita el ciclo.
Control de Flujo en Java
Permite al programador ejecutar instrucciones
repetidas veces y especificar los detalles de la
repetición mediante el uso de contadores.
Estructura de Repetición FOR
Sintaxis:
For ( inicialización; condición; incremento)
{
grupo de instrucciones;
}
Ejemplo:
for (int i=1; i<=10; i++){
System.out.prinln(i);
}
En este fragmento de codigo se imprime los numeros del 1 al 10. Para una mejor comprensión, en la siguiente
figura se muestra el encabezado de la instrucción for del ejemplo.
For ( int i = 1 ; i <= 10 ; i++ ) // Expresiones presentes en este fragmento: Palabra clave, variable de
control, valor inicial de la variable, condición de continuidad del ciclo.
La instruccion for, en un comienzo ejecuta la “inicializacion”, que no es mas que asignar el valor de inicio a la variable
que controla al ciclo. Luego verifica si la “condicion de continuidad” es verdadera o falsa; si es verdadera ejecuta el
grupo de acciones dentro de su cuerpo.
Control de Flujo en Java
Al finalizar ejecuta la acción de incremento que se emplea para asegurar que la condición de control sea falsa.
Nuevamente verifica si la “Condición de Continuidad” es verdadera repitiendo el grupo de acciones hasta que la
condición sea falsa. La instrucción de incremento de la variable de control es el equivalente a decir:
i = i + 1;
y lo que hace es sumar 1 al valor que posee la variable i y asignarlo a la variable i. Existen operadores de
incremento y decremento de variables, como el que acabamos de ver, para decrementar una variable en 1 solo
debemos de sustituir los signos “++” por “ - - ” y se decrementara el valor de la variable en 1.
Control de Flujo en Java
Estructura de repetición Do .. While
Sintaxis:
do{
grupo de instrucciones;
}while (condición)
El siguiente ejemplo muestra en pantalla los números del 1 al 10
int i = 0;
do{
system.out.println(i);
i++;
} while(i<=10)
En este ejemplo se repetirán las acciones dentro del cuerpo de do hasta que la condición i <= 10 sea falsa.
Control de Flujo en Java
Son utilizadas para interrumpir bloques de repetición
Instrucciones de ruptura break, continuo
En Java existen dos instrucciones de repetición
Break: permite interrumpir la ejecución de un ciclo y además la ejecución de la sentencia switch
for (int i = 1 ; i <= 10 ; i++) {
if (i==8){
break;
}
System.out.println(i);
}
En este fragmento de código anterior, se muestra en pantalla los números del 1 al 7 debido a que cuando “i” es igual a 8
se interrumpe el ciclo for.
Continúe: Obliga a que un bucle comience en la siguiente iteración.
for (int i = 1 ; i <= 10 ; i++){
if (i==8){
continue;
}
System.out.prinln(i);
}
En el fragmento de código anterior se ha reemplazado la instrucción break por la instrucción continúe, dando como resultado que
se impriman los números del 1 al 10, pero cuando i es igual a 8 se ejecuta la instrucción continúe lo que obliga al ciclo a continuar
a la siguiente iteración dejando sin mostrar el numero 8. La salida del ciclo seria: 1 2 3 4 5 6 7 9 10
Control de Flujo en Java
Estructura de Selección múltiple
Sintaxis:
switch(expresion){
case 1: grupo de instrucciones
case 2: grupo de instrucciones
case 3: grupo de instrucciones;
default: grupo de instrucciones
}
Ejemplo:
switch (opcion) {
case 1:
system.out.prinln(“Usted pulso la opcion 1”);
break; // interrumpe el switch
case 2:
system.out.prinln(“Usted pulso la opcion 2”);
break; // interrumpe el switch
default:
system.out.prinln(“Opcion no valida”);
}
En el ejemplo, la variable de selección se llama “opción”, el programa compara el valor de la variable con cada valor de las etiquetas switch;
por ejemplo si la variable “opción” es igual a 2 entonces, el programa compara todos los valores después de la etiqueta case 2 y ejecuta las
instrucciones del case 2 ya que coincide con su valor, la cual muestra en pantalla el mensaje “Usted pulso la opción 2”, la instrucción break en
el switch evita que las instrucciones de las etiquetas case por debajo de la seleccionada no se ejecuten y obliga a salir de este bloque de
estructura.
Si “opción” posee un valor diferente al 1 ó 2, se salta al grupo de acciones de la etiqueta default que mandan a mostrar en pantalla “opción
no valida”
Control de Flujo en Java
Ejemplos
Necesitamos elaborar una aplicacion que dado el salario de un empleado imprima los siguientes mensajes en pantalla dependiendo de
su sueldo
• Mayor a 2.000 “Ganas bien”
• Mayor a 2.000 y menor que 1.000 “con los cesta ticket aguantas”
• Mayor a 500 y menor que 1.000 “Vamos a ver si te alcanza”
• Menor a 500 “Y tienes que pagar la luz”
Por los momentos no se introduciran datos por teclado, asi que salario sera una variable definida en el programa
Public class Salario {
public static void main(String[] args)
{
int salario = 800; // Salario del empleado
// comenzamos a evaluar el salario del empleado
// para saber que mensaje debemos escribir
// evaluamos si el salario es mayor a 2.000
if (salario >= 2.000)
{
system.out.println (“Ganas bien”);
}
else
if (salario >= 1.000 && salario < 2.000) {
System.out.println (“Con los cesta ticket aguantas”);
}
else
if (salario >= 500 && salario < 1.000){
System.out.println ("Vamos a ver si te alcanza");
}
else
if (salario < 500)
{
system.out.println("cambia de trabajo");
}
} // fin metodo main
} // fin de clase
La ejecución de este programa muestra en pantalla lo siguiente:
vamos a ver si te alcanza
En este ejemplo se asume que la variable “salario” tendrá el sueldo del trabajador. En la línea 11 se hace la primera
evaluación de salario con la instrucción.
if (salario >= 2000000)
Como el salario del trabajador es mucho menor esta condición es falsa e ignora las instrucciones dentro de su
cuerpo y para ahora a ejecutar las instrucciones en la etiqueta else. Se debe acotar que como solo es una instrucción
la que esta dentro del cuerpo de la etiqueta else de la linea 15, no es necesario que encerremos entre llaves su
cuerpo. La instrucción dentro del cuerpo de la etiqueta else es la sentencia if en la linea 16 que luce como sigue:
if (salario >= 1000000 && salario < 2000000)
Donde evaluamos si el salario esta comprendido entre uno y dos millones. En esta condición se ha utilizado el
operador “&&” que hace una operación and entre las dos expresiones. Para que esta condición sea verdadera, las dos
condiciones deben ser verdaderas, es decir, salario debe ser mayor de 1000000 y además salario debe ser menor que
2000000. de ser falsa una de estas dos condiciones, el resultado es falso y pasa a ejecutar el cuerpo del else de la
linea 20. las siguientes sentencia siguen la misma lógica que las líneas anteriores.
Ejemplos
Ejemplos
Calculo de intereses compuesto. En este ejemplo elaboraremos un programa calcule y muestre en pantalla el monto de dinero de una cuenta
suponiendo que al comienzo el cliente deposito 1000 dolares en la cuenta y todos los intereses fueron depositados en esa cuenta durante 10 años.
Para este calculo nos valemos de la siguiente formula: c= p(1 + t)² (no es 2 es n)
Donde,
C es la cantidad de dinero depositada al final del n-esimo año
N es el numero de años
T es la tasa de interes
P es el monto que se invirtio originalmente
import java.text.DecimalFormat;
public class InteresCompuesto {
public static void main(String[] args) {
double cantidad; // Cantidad depositada
double principal = 1000; // inversion inicial
double tasa = 0.05; // tasa de interes
// Objeto que establece el formato de 2 decimales de un numero
DecimalFormat dosdecimales = new DecimalFormat (".00");
// mostramos en pantalla la primera linea de texto
System.out.println("año \tCantidad en deposito");
for ( int anio = 1; anio <= 10; anio++)
{
// Calcular la nueva cantidad para el año especifico
cantidad = principal * Math.pow(1.0 + tasa, anio);
System.out.println(anio + "\t" + dosdecimales.format(cantidad));
}
}
}
El resultado de la ejecución de esta aplicación es el siguiente:
Java posee librerías predefinidas que podemos usar, para esto solo se debe de importar la clase que queremos usar
en nuestro programa. Un ejemplo de ello se ve en la línea 1 donde la instrucción
import java.text.DecimalFormat;
Importa la clase DecimalFormat la cual nos permite preformatear los números con el formato que nosotros
queramos.
Año Cantidad en
Deposito
1 1050,00
2 1102,50
3 1157,63
4 1215,51
5 1276,28
6 1340,10
7 1407,10
8 1477,46
9 1551,33
10 1628,89
Ejemplos
En la línea 12
DecimalFormat dosdecimales = new DecimalFormat ( “ .00” );
Se crea una instancia de la clase DecimalFormat la cual especifica que se usaremos un formato de dos decimales.
En la línea 17
for ( int anio = 1; anio <= 10; anio++ )
Se declara un ciclo que repite las instrucciones dentro de su cuerpo 10 veces. La instrucción para el calculo de la
cantidad
cantidad = principal * math.pow(1.0 + tasa, anio);
Muestra un método nuevo llamado Math.pow. Este es un objeto intrínseco de Java que permite hacer operaciones
matemáticas. El método pow calcula la potencia del primer termino (1.0 + tasa) elevado al segundo (anio). El resultado
de esta operación es asignado a la cantidad.
En la línea 21 se manda a mostrar en pantalla el resultado, luego de mostrar el año se anexa el carácter especial
“\t” que marca una tabulación y por ultimo se hace uso del objeto dosdecimales para que convierta el valor de decimal
a un formato de solo dos decimales.
Ejemplos