Capítulo 1 Fundamentos Java Micro
Capítulo 1 Fundamentos Java Micro
CAPÍTULO 1
FUNDAMENTOS DEL
LENGUAJE JAVA
Margarita Zambrano, César Villacís, Margarita Villacís, Sofía Bayona, Luis Pastor 1
Lenguaje Java. Problemas, Casos y Proyectos.
Índice del Capítulo 1
Introducción 3
Objetivos 3
1.1. Creación de un Programa en Lenguaje Java 4
1.1.1. Utilización de una Herramienta de Programación para el Lenguaje Java 4
1.1.2. Escribiendo el Código del Programa 5
Problema 1.1. (Imprimiendo mensajes con la función printf) 5
1.1.3. Compilación, Interpretación y Ejecución 6
1.1.4. Uso de Comentarios en un Programa 6
1.2. Estructura Básica de un Programa en Java 7
1.2.1. Paquetes del programa 7
1.2.2. Directivas import 8
1.2.3. La Función Principal 8
1.2.4. Estructura Básica de un Problema de Programación en C/C++ 9
1.3. Funciones de Entrada y Salida de Datos 9
1.3.1. Funciones de Salida de Datos 9
1.3.1.1. Función de Salida printf() 9
1.3.1.2. Función de Salida println() 9
1.3.1.3. Función de Salida print() 9
1.3.2. Especificadores de Formato 9
1.3.3. Secuencias de Escape 10
1.3.4. Función de Entrada de Datos 10
Problema 1.2. (Aplicación de las funciones de entrada y salida de datos) 10
1.4. Variables 11
1.4.1. Definición de Variable 12
1.4.2. Tipos de Datos en Java 12
1.4.3. Declaración y Definición de Variables 12
1.4.4. Operador de Asignación Igual (=) 13
Problema 1.3. (Aplicación del operador de asignación igual) 13
1.4.5. Nombres de Variables 15
1.5. Operadores Aritméticos 15
1.5.1. Operadores Aritméticos Binarios 15
Problema 1.4. (Aplicación de los operadores aritméticos binarios) 16
1.5.2. El Operador de Módulo 17
1.5.3. Expresiones Aritméticas Compuestas 17
Problema 1.5. (Aplicación de las expresiones aritméticas compuestas) 17
1.5.4. Operadores Aritméticos Unarios 19
Problema 1.6. (Aplicación de los operadores aritméticos unarios) 19
1.5.5. Prueba de Escritorio 20
1.5.6. Precedencia de Operadores Aritméticos 22
Problema 1.7. (Aplicación del uso de precedencia de operadores aritméticos) 23
1.6. Operadores Relacionales 24
Problema 1.8. (Aplicación de los operadores relacionales) 24
1.7. Operadores Lógicos 26
Problema 1.9. (Aplicación de los operadores lógicos) 27
1.8. Fórmulas Matemáticas 28
1.8.1. Funciones de la Clase Math 28
Problema 1.10. (Aplicación del uso de funciones matemáticas) 29
1.8.2. Aplicaciones de las Funciones de la Clase Math 30
Problema 1.11. (Cálculo del área y el perímetro de un cuadrado) 30
Problema 1.12. (Cálculo del perímetro y el área de un círculo) 31
Problema 1.13. (Cálculo de la hipotenusa y de los ángulos de un triángulo rectángulo) 32
Problema 1.14. (Cálculo de la altura de un proyectil con una trayectoria parabólica) 34
1.9. Resumen 36
1.10. Test de Conocimientos 36
1.11. Problemas Propuestos 38
Referencias Bibliográficas 43
Margarita Zambrano, César Villacís, Margarita Villacís, Sofía Bayona, Luis Pastor 2
Lenguaje Java. Problemas, Casos y Proyectos.
Introducción
El Lenguaje Java es un lenguaje de programación orientado a objetos que permite que un
programa se ejecute en múltiples sistemas operativos, incluye soporte para trabajo en red y
ejecuta código en sistemas remotos de forma segura. Java es rápido, seguro y fiable y funciona
en varios tipos de dispositivos electrónicos como computadoras, consolas para juegos, centros
de datos, teléfonos móviles hasta en el Internet (Deitel & Deitel, 2016).
James Gosling1
Objetivos
▪ Crear, compilar, enlazar y ejecutar programas básicos en Java.
▪ Entender la estructura básica de un programa en Java.
▪ Aprender el funcionamiento de las funciones básicas de entrada y salida de datos.
▪ Entender el concepto de variable y tipos de datos.
▪ Revisar los operadores aritméticos, relacionales y lógicos que maneja el lenguaje Java.
▪ Revisar las principales fórmulas matemáticas de la clase Math que maneja el lenguaje
Java.
▪ Diseñar y crear programas en lenguaje Java utilizando operadores aritméticos,
operadores relacionales, operadores lógicos y fórmulas matemáticas, aplicadas al área
de las Matemáticas y de la Física.
1
Imagen tomada de: REDDIT, (s.f.). Entrevista con James Gosling, el padre de Java. Su vida y sus pasatiempos. Disponible en:
https://www.reddit.com/r/programming/comments/6kcich/interview_with_james_gosling_father_of_java_his/?tl=es-
es&rdt=54373.
Margarita Zambrano, César Villacís, Margarita Villacís, Sofía Bayona, Luis Pastor 3
Lenguaje Java. Problemas, Casos y Proyectos.
Margarita Zambrano, César Villacís, Margarita Villacís, Sofía Bayona, Luis Pastor 4
Lenguaje Java. Problemas, Casos y Proyectos.
1.1.2. Escribiendo el Código del Programa
A continuación, se va a crear nuestro primer programa, para lo cual se puede escribir o copiar el
siguiente código en lenguaje Java, exactamente tal y como está, dentro de un archivo .java; cuyo
nombre del proyecto corresponde a “JavaConsolaPrograma_1_1”.
Problema 1.1: Escribir un programa que imprima un mensaje de “Hola mundo” y otro que diga
“Bienvenidos al Lenguaje Java”, separado por un INTRO (salto de línea).
// Paquete de la Lógica.
package PaqueteLogica;
Como se puede ver en este programa, nosotros desplegamos el texto: “Hola mundo.” en la
consola mediante la función printf(), seguido de un salto de línea utilizando la secuencia de
escape “\n”, como se indica en la siguiente instrucción:
System.out.printf("Hola mundo.\n");
System.out es la salida estándar de datos que se utiliza para enviar información a la consola y
la palabra reservada System es la clase Java a la que aplica o con la que trabaja.
Finalmente, ejecutamos el programa presionando la flecha de color verde (Run Project) que está
en la barra de tareas.
Margarita Zambrano, César Villacís, Margarita Villacís, Sofía Bayona, Luis Pastor 5
Lenguaje Java. Problemas, Casos y Proyectos.
1.1.3. Compilación, Interpretación y Ejecución
Después de que el código de un programa en lenguaje Java está completado, éste debe ser
compilado a un lenguaje intermedio independiente de la máquina. Para ser ejecutado un
programa se cumplen con dos pasos en este proceso:
1) Compilación
2) Interpretación
En el primer paso que es la compilación, el compilador compila cada archivo de código fuente
(.JAVA) de un proyecto generando los archivos bytecodes (.CLASS) por cada archivo de código
fuente. El código se compila a un lenguaje intermedio llamado bytecodes independiente de la
máquina (Joyanes & Zahonero, 2011).
Para ejecutar un programa en el IDE NetBeans, como, por ejemplo, el Programa 1.1, se debe
seleccionar de la barra de tareas, la flecha de color verde (Run Project) que activa la depuración
y la ejecución del programa.
a) Cuando se quiere comentar más de una línea de código, se utiliza la instrucción ‘/* …
*/’, como consta en el Programa 1.1, donde se tiene el siguiente ejemplo:
/*******************************************************
JavaConsolaPrograma_1_1
*******************************************************/
b) Cuando se quiere comentar una sola línea de código, se utiliza la instrucción ‘//’, como
consta en el Programa 1.1, donde se tienen los siguientes ejemplos:
// Paquete de la Lógica.
// Clase del programa.
// Función principal.
// Función printf(), que imprime mensajes de texto.
Los comentarios son textos o cadenas de caracteres que son ignoradas por el compilador.
Cuando el compilador compila el programa, se salta cualquier comentario y no lo toma en cuenta.
Margarita Zambrano, César Villacís, Margarita Villacís, Sofía Bayona, Luis Pastor 6
Lenguaje Java. Problemas, Casos y Proyectos.
Escribir comentarios claros resulta especialmente importante cuando se trabaja en equipos de
trabajo, donde otros programadores necesitarán leer y modificar su código. Los “buenos
comentarios” son claros, concisos, y fáciles de entender, contrario a los “malos comentarios”
que son inconsistentes, fuera de fecha, ambiguos, vagos, superfluos y no los puede entender
cualquiera (Luna, 2004).
La Figura 1.4 muestra la estructura básica de un programa en Java donde el nombre de la clase
principal es un nombre descriptivo y en el programa principal se incluye las instrucciones del
programa y dependiendo de las funciones que se utilicen se deben incluir las directivas ‘import’
necesarias, todo dentro del paquete de la lógica del programa.
Margarita Zambrano, César Villacís, Margarita Villacís, Sofía Bayona, Luis Pastor 7
Lenguaje Java. Problemas, Casos y Proyectos.
1.2.2. Directivas import
En el programa 1.1 se necesitó utilizar algo de código que no fue escrito por nosotros mismos.
En este curso, la mayor parte de este “código útil”, representado por clases, lo encontraremos
en las librerías de encabezado de Java (Joyanes & Zahonero, 2011), que es un conjunto de
código que se envía al intérprete enlazado con el programa. Algunos ejemplos de este “código
útil” se mencionan a continuación en la Tabla 1.1:
import java.lang
De esta librería se utiliza la clase “System” para imprimir mensajes utilizando la función “printf()”.
La función main(…) es especial porque es el punto de entrada para cada programa en Java, es
decir, cada programa en Java comienza ejecutando su main. Consecuentemente, cada programa
en Java debe tener una función main (Joyanes & Zahonero, 2011). El código correspondiente a
la función main va encerrado entre llaves y se lo conoce como el cuerpo de la función o la
definición de la función. Estos conceptos y otros serán profundizados en el Capítulo 3, referente
a Funciones.
En Java, las llaves {} son utilizadas para definir el inicio y el fin de una unidad de código lógico.
Por ejemplo, en el programa 1.1, la llave abierta ‘{’, denota el inicio de un código de bloque, y la
llave cerrada ‘}’, denota el fin del código de bloque. Un par de llaves deben siempre ir juntas en
la función principal. En la Figura 1.6 se muestra un logo de la función principal y lo que ella
significa.
Margarita Zambrano, César Villacís, Margarita Villacís, Sofía Bayona, Luis Pastor 8
Lenguaje Java. Problemas, Casos y Proyectos.
1.2.4. Estructura Básica de un Problema de Programación en C/C++
Margarita Zambrano, César Villacís, Margarita Villacís, Sofía Bayona, Luis Pastor 9
Lenguaje Java. Problemas, Casos y Proyectos.
1.3.1.2. Función de Salida println()
La función “println()” permite imprimir cadenas de caracteres y variables, para lo cual se pueden
concatenar cadenas de caracteres con mensajes y variables utilizando el operador de suma “+”
y queda opcional el uso de secuencias de escape, ya que esta función automáticamente incluye
un salto de línea o INTRO al final de cada instrucción (Dean & Dean, 2009).
La función “print()” permite imprimir cadenas de caracteres o texto, pero no sirve para imprimir
variables y se pueden utilizar secuencias de escape (Dean & Dean, 2009).
Código Descripción
%c Formato de carácter a cadena de caracteres (string)
%d Formato de entero a cadena de caracteres
%ld Formato de entero largo a cadena de caracteres
%f Formato de punto flotante a cadena de caracteres
%lf Formato de punto flotante de doble precisión a cadena de caracteres
%s Formato de cadena de caracteres a cadena de caracteres
primerNombre = escaneo.nextLine();
Margarita Zambrano, César Villacís, Margarita Villacís, Sofía Bayona, Luis Pastor 10
Lenguaje Java. Problemas, Casos y Proyectos.
Problema 1.2: Escribir un programa que permita preguntarle al usuario su primer nombre y
donde luego la computadora responda Hola usuario XYZ.
// Paquete de la Lógica.
package PaqueteLogica;
// Librerías.
import java.util.Scanner;
Como se puede en este programa, nosotros desplegamos el texto: “Ingrese su primer nombre y
presione INTRO: ” en la consola con la siguiente instrucción:
Luego nosotros le pedimos al usuario que ingrese su primer nombre con la siguiente instrucción:
primerNombre = escaneo.nextLine();
Margarita Zambrano, César Villacís, Margarita Villacís, Sofía Bayona, Luis Pastor 11
Lenguaje Java. Problemas, Casos y Proyectos.
1.4. Variables
En el programa 1.3 le pedimos al usuario que ingrese su nombre. Luego el programa dice “Hola”,
a aquel usuario escribiendo su nombre. La computadora sabe a qué nombre debe decirle “Hola”,
debido a que nosotros guardamos el nombre del usuario con la siguiente instrucción:
primerNombre = escaneo.nextLine();
Debido a que el nombre del usuario fue guardado en una variable, nosotros podemos desplegar
el valor de la variable que contiene un nombre con la siguiente línea de código:
En el lenguaje Java se debe declarar las variables previamente antes de usarlas, porque en la
compilación del programa se asigna el espacio de memoria a las variables de acuerdo a su tipo
de dato. En la Figura 1.8 se muestra como la variable ‘num_entero’ tiene en su contenido el
valor de 20 y ese valor está almacenado en un espacio de memoria cuya dirección es FF100
ubicada en la memoria RAM.
Margarita Zambrano, César Villacís, Margarita Villacís, Sofía Bayona, Luis Pastor 12
Lenguaje Java. Problemas, Casos y Proyectos.
float Utilizado para almacenar valores de números ±[1.2 x 10-38, 3.4 x 4
con coma flotante. 1038]
double Utilizado para almacenar valores de números ± [2.2 x 10-308, 1.8 x 8
con coma flotante grandes o de doble 10308]
precisión.
boolean Utilizado para almacenar valores de verdad [0, 1] 1
que pueden ser true (verdadero) y false
(falso). Cabe notar que el valor de cero es
considerado falso y cualquier otro valor que
no se cero es considerado verdadero.
String Utilizado para almacenar variables de tipo de [0, 2000 millones de 1 Byte por
cadenas de caracteres. caracteres] caracter
El tamaño en bytes de los tipos de datos, dependen de la plataforma. Por ejemplo, si usted asume
en su código que un char ocupa 1 Byte en una plataforma de 16-bits, y luego se mueve a una
plataforma de desarrollo de 32-bits, puede ser que haya ajustes en los tamaños de los datos.
Tipo_de_Dato Nombre_de_la_Variable;
Por ejemplo:
char letra;
int num_entero;
float num_flotante;
Conforme a este ejemplo se puede ver que se han declarado tres variables, cada una con un
nombre específico y con un tipo de dato. Sin embargo, estas variables que han sido declaradas
no están definidas, es decir, el valor de almacenamiento de cada una de ellas es desconocido.
Consecuentemente, es común decir que estas variables contienen basura.
Se puede declarar y definir una variable al mismo tiempo en Java. Por ejemplo:
Se puede hacer múltiples declaraciones y/o definiciones en una sola instrucción utilizando el
operador coma (,). Por ejemplo:
int x, y, z;
Margarita Zambrano, César Villacís, Margarita Villacís, Sofía Bayona, Luis Pastor 13
Lenguaje Java. Problemas, Casos y Proyectos.
x = 1, y = 3, z = -2;
float a = 2.1f, b = 3.5f, c = 4.9f;
Se recomienda hacer una declaración o definición por línea, para detectar más fácilmente
errores.
Finalmente se puede también enlazar asignaciones juntas. El flujo de los valores asignados va
desde la derecha hacia la izquierda. Por ejemplo:
float n = 1.0f;
float x, y, z;
x = y = z = n;
Problema 1.3: Escribir un programa que permita leer e imprimir un dato de tipo caracter, un dato
de tipo entero y un dato de tipo flotante, declarando y definiendo las variables previamente.
// Paquete de la Lógica.
package PaqueteLogica;
// Librerías.
import java.util.Scanner;
Margarita Zambrano, César Villacís, Margarita Villacís, Sofía Bayona, Luis Pastor 14
Lenguaje Java. Problemas, Casos y Proyectos.
Ejecución 1.3. Salida del programa.
El objeto “escaneo” se utiliza para leer un caracter (char), utilizando la siguiente línea de código:
letra = escaneo.next().charAt(0);
Luego, este mismo objeto se utiliza para leer un entero (int), utilizando la siguiente línea de
código:
num_entero = escaneo.nextInt();
Luego, este mismo objeto se utiliza para leer un flotante (float), utilizando la siguiente línea de
código:
num_flotante = escaneo.nextFloat();
Finalmente, en este programa se utiliza la función “printf()” que como se indicó en la sección
1.3.1.1, sirve para imprimir mensajes de texto y datos (salida por consola). En este caso, esta
función se utilizó para imprimir los tres datos leídos por teclado.
1. Los nombres de las variables deben comenzar con una letra. El nombre de la variable
5MiVariable es ilegal. Sin embargo, el caracter guión bajo (underscore) se lo considera
una letra, y por lo tanto, el identificador _MiVariable es legal.
2. Los nombres de las variables pueden incluir el caracter guión bajo o underscore (‘_’),
letras, y números, pero no símbolos. Por lo que, usted no puede utilizar símbolos como:
‘!’, ‘”’, ‘#’, ‘$’, ‘%’, ‘&’, `/`, etc., en los nombres de las variables.
3. Los nombres de las variables no pueden ser palabras reservadas de Java, como: char,
int, float, out, in, System, etc. Por ejemplo, usted no puede nombrarle a una variable
como “float”, ya que es una palabra reservada de Java que especifica el tipo de dato
float.
Margarita Zambrano, César Villacís, Margarita Villacís, Sofía Bayona, Luis Pastor 15
Lenguaje Java. Problemas, Casos y Proyectos.
4. Los nombres de las variables no pueden tener espacios en blanco entre ellas. Por
ejemplo, el nombre de la variable “_ M i _ Variable” es ilegal, lo correcto sería tener el
siguiente nombre: “_Mi_Variable”.
Tip de Programación: El lenguaje Java es case sensitive (letra sensitiva). Por ejemplo, las
siguientes palabras: hola, Hola, HOLA, hola, aunque quieren decir lo mismo, es decir, son
únicas, ellas difieren por la letra (mayúscula y minúscula).
Problema 1.4: Escribir un programa que permita presentar el uso de los operadores aritméticos
binarios con los tipos de datos enteros de Java.
// Paquete de la Lógica.
package PaqueteLogica;
Margarita Zambrano, César Villacís, Margarita Villacís, Sofía Bayona, Luis Pastor 16
Lenguaje Java. Problemas, Casos y Proyectos.
7 7 2 7 7 13 23 23 8 7
= = = 2
2 1 3 13 7 0 8 7 2 8
Margarita Zambrano, César Villacís, Margarita Villacís, Sofía Bayona, Luis Pastor 17
Lenguaje Java. Problemas, Casos y Proyectos.
Problema 1.5: Escribir un programa que permita probar el uso de las cinco expresiones
aritméticas compuestas, con dos números enteros leídos desde el teclado.
// Paquete de la Lógica.
package PaqueteLogica;
// Librerías.
import java.util.Scanner;
Margarita Zambrano, César Villacís, Margarita Villacís, Sofía Bayona, Luis Pastor 18
Lenguaje Java. Problemas, Casos y Proyectos.
}
}
Tip de Programación: El operador de incremento++ utilizado en notación postfija del ejemplo anterior
es equivalente a: 𝑥 = 𝑥 + 1; mientras que el operador de decremento-- utilizado en notación postfija
del ejemplo anterior es equivalente a: 𝑦 = 𝑦 − 1.
Problema 1.6: Escribir un programa que permita probar el uso de los operadores aritméticos
unarios en expresiones matemáticas simples.
// Paquete de la Lógica.
package PaqueteLogica;
// Librerías.
import java.util.Scanner;
Margarita Zambrano, César Villacís, Margarita Villacís, Sofía Bayona, Luis Pastor 19
Lenguaje Java. Problemas, Casos y Proyectos.
// Operador de negación.
System.out.printf("Uso del operador de negación.\n");
int a = 5;
System.out.printf("El valor de a = %d\n", a);
int b = -a; // b = -5
System.out.printf("El valor de b = %d\n", b);
System.out.printf("\n");
// Operador de incremento.
System.out.printf("Uso del operador de incremento en notación postfija.");
System.out.printf("\n");
int x = 5;
System.out.printf("El valor de x = %d\n", x);
x++; // x = 6 (postfijo)
System.out.printf("El valor de x = %d\n", x);
System.out.printf("\n");
// Operador de decremento.
System.out.printf("Uso del operador de decremento en notación postfija.");
System.out.printf("\n");
int y = 5;
System.out.printf("El valor de y = %d\n", y);
y--; // y = 4 (postfijo)
System.out.printf("El valor de y = %d\n", y);
System.out.printf("\n");
}
}
Margarita Zambrano, César Villacís, Margarita Villacís, Sofía Bayona, Luis Pastor 20
Lenguaje Java. Problemas, Casos y Proyectos.
1.5.5. Prueba de Escritorio
La prueba de escritorio es una técnica que permite controlar el flujo de los datos y ver los valores
que van tomando las variables de un programa en el momento de la ejecución del mismo. En la
Tabla 1.6.1 que forma parte del Ejercicio 1.6 se presenta una prueba de escritorio manual donde
en la primera columna está cada uno de los pasos que se cumplen desde el inicio del programa
hasta la finalización del mismo y en las otras columnas los valores que van tomando cada una
de las variables en cada uno de los pasos del programa.
Se puede realizar también la prueba de escritorio con la computadora, para lo cual se utiliza una
de las herramientas de depuración (Debug) del IDE de NetBeans, la cual la encontramos en la
barra de menús y la activamos con la tecla “F7” que permite hacer una prueba de escritorio paso
a paso por procedimientos, como se muestra en la Figura 1.10.
La opción de depuración de paso a paso por procedimientos, permite que el compilador ejecute
paso a paso el programa desde el inicio hasta el final del mismo, presionando cada vez la tecla
“F7” sin entrar al detalle de las funciones, como se muestra en la Figura 1.11.
Una vez que se haya activado la opción de depuración de paso a paso por procedimientos, se
puede hacer una prueba de escritorio utilizando la computadora, presionando “F7” para pasar de
una instrucción a otra, pero por procedimiento, donde en una ventana de depuración se puede
ver los diferentes valores que van tomando las variables del programa, tal como se lo hace en la
prueba de escritorio manual. La Figura 1.12 muestra los valores de las variables en el “Paso 6”
de la prueba de escritorio con la computadora.
Margarita Zambrano, César Villacís, Margarita Villacís, Sofía Bayona, Luis Pastor 21
Lenguaje Java. Problemas, Casos y Proyectos.
int x = 7 + 2 * 6 / 3 -1;
En este punto surge una pregunta: ¿En qué orden el compilador ejecuta las varias operaciones
aritméticas? En el lenguaje Java cada operador tiene definida un nivel de precedencia, y los
operadores son evaluados en un orden de mayor precedencia a menor precedencia. Las
operaciones de multiplicación, división y módulo tienen el mismo nivel de precedencia. De
manera similar la operación de suma y de resta, tienen el mismo nivel de precedencia. Por lo
tanto, las operaciones de multiplicación, división y módulo tienen mayor precedencia que la suma
y la resta, lo que implica que las operaciones de multiplicación, división y módulo siempre
ocurrirán antes que la suma y la resta (Deitel & Deitel, 2016). Entonces, la expresión anterior
será evaluada de la siguiente forma:
int x = 7 + 2 * 6 / 3 - 1;
= 7 + 12 / 3 - 1;
= 7 + 4 - 1;
= 11 - 1;
= 10;
Margarita Zambrano, César Villacís, Margarita Villacís, Sofía Bayona, Luis Pastor 22
Lenguaje Java. Problemas, Casos y Proyectos.
Nótese que los operadores con el mismo nivel de precedencia son evaluados de izquierda a
derecha.
Algunas veces se requiere forzar a que una operación ocurra primero. Por ejemplo, en la
expresión anterior, se pudo haber querido que la suma entre 7 y 2 y la resta entre 3 y 1 se realice
primero. Así como está la expresión, no se puede cumplir con este caso, pero si encerramos
entre paréntesis las expresiones que queremos que se evalúen primero, el problema está
resuelto. Entonces se puede forzar la evaluación de operadores de menor precedencia como la
suma y la resta sobre operadores de mayor precedencia como la multiplicación, la división y el
módulo, utilizando paréntesis. Así entonces, tenemos reformulada la expresión matemática
anterior, de la siguiente manera:
int x = (7 + 2) * 6 / (3 - 1);
= 9 * 6 / 2;
= 54 / 2;
= 27;
Los paréntesis también pueden estar anidados en una expresión matemática, donde usted puede
especificar el grupo de expresiones que quiere que se evalúe primero, luego las que van en
segundo lugar y después las que van en tercer lugar, etc. En una expresión con paréntesis
anidados, las operaciones son evaluadas en cierto orden, desde el grupo de paréntesis más
interno hasta el grupo de paréntesis más externo. El siguiente ejemplo muestra lo indicado:
Tip de Programación: Observe que los operadores aritméticos se utilizan para evaluar un
valor numérico, que se conoce como expresión numérica. Generalizando, algo que evalúa a
algo más se considera una expresión. En el siguiente capítulo veremos que también existen
expresiones lógicas (expresiones con operadores lógicos), las cuales evalúan valores de
veracidad o falsedad.
Problema 1.7: Escribir un programa que permita probar el uso de la precedencia de operadores
con las expresiones numéricas expuestas en la sección 1.5.
// Paquete de la Lógica.
package PaqueteLogica;
// Librerías.
import java.util.Scanner;
Margarita Zambrano, César Villacís, Margarita Villacís, Sofía Bayona, Luis Pastor 23
Lenguaje Java. Problemas, Casos y Proyectos.
int x = 7 + 2 * 6 / 3 - 1;
int y = (7 + 2) * 6 / (3 - 1);
int z = (((7 + 3) / 2) * (6 - 2)) - (18 / (7 + 2));
Margarita Zambrano, César Villacís, Margarita Villacís, Sofía Bayona, Luis Pastor 24
Lenguaje Java. Problemas, Casos y Proyectos.
Problema 1.8: Escribir un programa que permita probar el uso de los operadores relacionales,
con dos números enteros leídos desde el teclado.
// Paquete de la Lógica.
package PaqueteLogica;
// Librerías.
import java.util.Scanner;
boolean EsIgual;
boolean EsDesigual;
boolean EsMayor;
boolean EsMenor;
boolean EsMayorOigual;
boolean EsMenorOigual;
Margarita Zambrano, César Villacís, Margarita Villacís, Sofía Bayona, Luis Pastor 25
Lenguaje Java. Problemas, Casos y Proyectos.
System.out.println("¿El número " + a + " no es igual al número " + b +
"? " + EsDesigual);
System.out.println("¿El número " + a + " es mayor que el número " + b +
"? " + EsMayor);
System.out.println("¿El número " + a + " es menor que el número " + b +
"? " + EsMenor);
System.out.println("¿El número " + a + " es mayor o igual que el número "
+ b + "? " + EsMayorOigual);
System.out.println("¿El número " + a + " es menor o igual que el número "
+ b + "? " + EsMenorOigual);
}
}
Margarita Zambrano, César Villacís, Margarita Villacís, Sofía Bayona, Luis Pastor 26
Lenguaje Java. Problemas, Casos y Proyectos.
Verdadero (1) Falso (0)
Falso (0) Verdadero (1)
Problema 1.9: Escribir un programa que permita representar la expresión algebraica: (A || B) &&
(!A || !B) y probar una de las salidas de la puerta lógica XOR, para lo cual se debe leer por teclado
el valor de verdad de A y de B.
// Paquete de la Lógica.
package PaqueteLogica;
// Librerías.
import java.util.Scanner;
Margarita Zambrano, César Villacís, Margarita Villacís, Sofía Bayona, Luis Pastor 27
Lenguaje Java. Problemas, Casos y Proyectos.
Margarita Zambrano, César Villacís, Margarita Villacís, Sofía Bayona, Luis Pastor 28
Lenguaje Java. Problemas, Casos y Proyectos.
calcular la raíz cuadrada, funciones para calcular el valor absoluto de un número, etc., (Verhas,
2017). La Tabla 1.12 resume algunas de las funciones matemáticas más comúnmente utilizadas:
Las funciones trigonométricas sólo trabajan con radianes y no con grados. Un número ‘x’ puede
ser convertido des grados a radianes multiplicando ese valor por 𝜋/180𝑜 . Así mismo, un número
‘x’ puede ser convertido de radianes a grados multiplicando ese valor por 180𝑜 /𝜋. Por ejemplo:
360 = 360𝑜 × 𝜋/180𝑜 = 2𝜋.
Las funciones mencionadas anteriormente trabajan con flotantes de doble precisión (double). En
el mundo real, el tipo de dato más utilizado en la mayor parte de las aplicaciones científicas y
matemáticas es el float (flotante), por lo que si se quiere trabajar con estas funciones es necesario
realizar conversiones de tipos de datos implícitas.
Problema 1.10: Escribir un programa que permita probar el uso de al menos seis de las doce
funciones matemáticas de la Tabla 1.10.
// Paquete de la Lógica.
package PaqueteLogica;
// Librerías.
import java.util.Scanner;
Margarita Zambrano, César Villacís, Margarita Villacís, Sofía Bayona, Luis Pastor 29
Lenguaje Java. Problemas, Casos y Proyectos.
System.out.println("Manejo de funciones matemáticas.");
// Imprimir un INTRO (salto de línea).
System.out.print("\n");
// Imprimir un mensaje y leer un dato de tipo bool.
System.out.print("Ingrese el valor de x: "); // Salida.
x = escaneo.nextFloat(); // Entrada.
// Imprimir un salto de línea (INTRO).
System.out.print("\n");
Siendo “l” el valor del lado del cuadrado. Además, trabajar con valores flotantes y con las
funciones matemáticas de la clase “Math”.
// Paquete de la Lógica.
package PaqueteLogica;
Margarita Zambrano, César Villacís, Margarita Villacís, Sofía Bayona, Luis Pastor 30
Lenguaje Java. Problemas, Casos y Proyectos.
// Librerías.
import java.util.Scanner;
Problema 1.12: Escribir un programa para calcular e imprimir el perímetro y el área de un círculo,
utilizando las funciones ‘cout’, ‘cin’ y las siguientes fórmulas matemáticas:
Siendo “r” el valor del radio del círculo. (Trabajar con valores flotantes).
Margarita Zambrano, César Villacís, Margarita Villacís, Sofía Bayona, Luis Pastor 31
Lenguaje Java. Problemas, Casos y Proyectos.
Programa 1.12: Código del programa.
/*******************************************************
JavaConsolaPrograma_1_12
*******************************************************/
// Paquete de la Lógica.
package PaqueteLogica;
// Librerías.
import java.util.Scanner;
// Función principal.
public static void main(String[] args) {
float radio; // Entrada: radio de un círculo.
float perimetro; // Salida: perímetro de un círculo.
float area; // Salida: área de un círculo.
// Objeto de tipo Scanner.
Scanner escaneo = new Scanner(System.in);
// Calcular el perímetro.
perimetro = 2 * (float) Math.PI * radio;
// Calcular el área.
area = (float) Math.PI * radio * radio;
Problema 1.13: Escribir un programa que calcule la hipotenusa y los dos ángulos internos de un
triángulo rectángulo que suman 90°, utilizando las siguientes fórmulas matemáticas:
Margarita Zambrano, César Villacís, Margarita Villacís, Sofía Bayona, Luis Pastor 32
Lenguaje Java. Problemas, Casos y Proyectos.
Programa 1.13: Código del programa.
/*******************************************************
JavaConsolaPrograma_1_13
*******************************************************/
// Paquete de la Lógica.
package PaqueteLogica;
// Librerías.
import java.util.Scanner;
// Función principal.
public static void main(String[] args) {
// Declaración de variables.
float a; // Entrada: cateto 1 del triángulo rectángulo.
float b; // Entrada: cateto 2 del triángulo rectángulo.
float hipotenusa; // Salida: hipotenusa del triángulo rectángulo.
float anguloA; // Salida: ángulo A del triángulo rectángulo.
float anguloB; // Salida: ángulo B del triángulo rectángulo.
// Objeto de tipo Scanner.
Scanner escaneo = new Scanner(System.in);
// Calcular la hipotenusa.
hipotenusa = (float) Math.sqrt((float) Math.pow(a, 2) + (float) Math.pow(b, 2));
// Calcular el ángulo A del triángulo rectángulo.
anguloA = (float) Math.atan2(b, a);
// Convertir el valor del ángulo A de radianes a grados.
anguloA = anguloA * 180 / (float) Math.PI;
// Calcular el ángulo A del triángulo rectángulo.
anguloB = (float) Math.atan2(a, b);
// Convertir el valor del ángulo B de radianes a grados.
anguloB = anguloB * 180 / (float) Math.PI;
Margarita Zambrano, César Villacís, Margarita Villacís, Sofía Bayona, Luis Pastor 33
Lenguaje Java. Problemas, Casos y Proyectos.
Salida 1.12: Salida del programa.
Problema 1.14: Escribir un programa para calcular e imprimir la altura (𝑦 =? ) y la distancia entre
el punto 𝐴 y 𝐵 (ℎ =? ), donde se encuentra un blanco para práctica de tiro (𝐵) en un plano
inclinado cuya forma corresponde a un triángulo rectángulo como se muestra en la Figura 1.14.1.
En la parte inferior correspondiente al punto 𝐴 se encuentra un aprendiz de tiro al blanco cuya
distancia en la base del triángulo es conocida. Se sabe además que el aprendiz dispara un
proyectil con un ángulo 𝜃 (𝑡ℎ𝑒𝑡𝑎) de lanzamiento conocido con respecto a la horizontal y con una
velocidad 𝑉0 conocida, de acuerdo a las siguientes fórmulas matemáticas. (Problema adaptado
de Serway y Jewett, 2005).
Figura 1.14.1. Tiro parabólico en un plano inclinado. (Serway & Jewett, 2005).
// Paquete de la Lógica.
package PaqueteLogica;
// Librerías.
import java.util.Scanner;
Margarita Zambrano, César Villacís, Margarita Villacís, Sofía Bayona, Luis Pastor 34
Lenguaje Java. Problemas, Casos y Proyectos.
// Declaración de constantes.
static final float g = 9.81f;
// Función principal.
public static void main(String[] args) {
// Declaración de variables.
float x; // Entrada: valor de 'x' del plano inclinado.
float theta; // Entrada: ángulo 'theta' de lanzamiento.
float Vo; // Salida: velocidad inicial de lanzamiento.
float y; // Salida: valor de 'y' del plano inclinado.
float h; // Salida: valor de 'h' del plano inclinado.
// Objeto de tipo Scanner.
Scanner escaneo = new Scanner(System.in);
Margarita Zambrano, César Villacís, Margarita Villacís, Sofía Bayona, Luis Pastor 35
Lenguaje Java. Problemas, Casos y Proyectos.
1.9. Resumen
1. El compilador de Java traduce el código fuente a código bytecode. El intérprete luego
combina el código objeto para producir el programa ejecutable que puede correr sobre
un sistema operativo.
2. Cada programa en lenguaje Java tiene una función principal (main), la cual define el
punto de entrada a un programa.
3. El archivo de la librería de clases System y Scanner contiene un sinnúmero de funciones
para entrada y salida de datos. Entre las funciones más importantes para esta sección
están la función ‘printf()’, la función ‘println()’, la función ‘print()’, que son funciones de
salida de datos; y el objeto de tipo ‘Scanner’ que maneja varias funciones para entrada
de datos.
4. Una variable permite almacenar un elemento en la memoria de acceso aleatorio (RAM)
un valor de algún tipo de dato definido en el lenguaje Java.
5. Los cinco operadores aritméticos binarios que maneja el lenguaje Java son: suma (+),
resta (-), multiplicación (*), división (/), módulo (%).
6. Los seis operadores relacionales que maneja el lenguaje Java son: igual a (==), no igual
a (!=), mayor que (>), menor que (<), mayor o igual que (>=), menor o igual que (<=).
7. Los tres operadores lógicos que maneja el lenguaje Java son: operador lógico AND (&&),
operador lógico OR (||), operador lógico de negación NOT (!).
8. La clase Math, es una librería que tiene funciones para realizar operaciones matemáticas
básicas, tales como: funciones trigonométricas, funciones exponenciales, funciones
logarítmicas, funciones para calcular la raíz cuadrada, funciones para calcular el valor
absoluto de un número, etc.
9. En el lenguaje Java se pueden crear programas que utilicen operadores aritméticos,
relacionales y lógicos para resolver problemas de programación.
2. ¿Cuáles son los dos pasos del proceso de traducción de un programa en el lenguaje
Java?
a. El enlazamiento seguido de la compilación.
b. La compilación seguida por la interpretación.
c. La ejecución seguida por la compilación.
d. La interpretación seguida por la ejecución.
Margarita Zambrano, César Villacís, Margarita Villacís, Sofía Bayona, Luis Pastor 36
Lenguaje Java. Problemas, Casos y Proyectos.
5. Se puede o no incluir la librería __________ para utilizar la función println() y utilizar los
tipos de datos String. Se necesita incluir la librería __________ para utilizar objetos de
tipo Scanner.
a. Librería java.io y java.util.Scanner.
b. Librería java.lang y java.util.Scanner.
c. Librería java.util y java.util.Scanner.
d. Librería java.lang y java.util.
int a = 7;
int b = 2;
int c;
c = a++ * b--;
a = 2 * b++;
b = 25 % a--;
Margarita Zambrano, César Villacís, Margarita Villacís, Sofía Bayona, Luis Pastor 37
Lenguaje Java. Problemas, Casos y Proyectos.
System.out.println("b = " + b);
System.out.println("c = " + c);
int a = 7;
int b = 2;
int c;
float x = 9;
float y;
float z;
Respuestas:
1. c); 2. b); 3. a); 4. d); 5. b); 6. c). 7. b); 8. c); 9. d); 10. a); 11. b); 12. c); 13. d); 14. b).
a. 16 * 17 - 4 * 8
b. (25 + 3 * 7) / 5
Margarita Zambrano, César Villacís, Margarita Villacís, Sofía Bayona, Luis Pastor 38
Lenguaje Java. Problemas, Casos y Proyectos.
c. 4 + 5 *(9 * (5 - (10 + 4) / 7))
d. 5 * 4 * 6 + 9 * 5 * 3 – 6
**********
* *
* *
* *
**********
* *
* *
* *
* *
* *
************
* *
* *
* *
************
**********
* *
* *
* *
**********
* *
* *
* *
* *
**********
**********
*
*
*
*
*
*
*
*
**********
****
* *
* *
****
Margarita Zambrano, César Villacís, Margarita Villacís, Sofía Bayona, Luis Pastor 39
Lenguaje Java. Problemas, Casos y Proyectos.
7. Escribir un programa que imprima un triángulo con asteriscos:
*
**
***
****
*****
(𝑎−𝑏)2
a. 𝑒 = (𝑎 + 𝑏 + 𝑐) (𝑐−𝑏)2
(𝑥+𝑦)
b. 𝑧 =
(𝑥−𝑦)2
c. 𝑘 = √𝑠 ∙ (𝑠 − 𝑎) ∙ (𝑠 − 𝑏) ∙ (𝑠 − 𝑐)
9
d. 𝑓 = 𝑐 ∙ 32
5
𝑐∙𝑒−𝑏∙𝑓
e. 𝑥 =
𝑎∙𝑒−𝑏∙𝑑
𝐺∙𝑚1 ∙𝑚2
f. 𝐹 =
𝑑2
g. ℎ = √𝑎2 + 𝑏 2
h. 𝑒 = 𝑚 ∙ 𝑐 2
A B 𝐴⟷𝐵
V V V
V F F
F V F
F F V
10. Escribir un programa que permita representar la expresión algebraica: ! (𝐴||𝐵) y probar
una de las salidas de la puerta lógica NOR, para lo cual se debe leer por teclado el valor
de verdad de A y de B, utilizando las funciones ‘cout’ y ‘cin’. Esta puerta lógica se conoce
también como la disyunción opuesta (𝐴 ↓ 𝐵), cuya tabla de verdad es:
A B 𝐴↓𝐵
V V F
V F F
F V F
F F V
A B 𝐴↑𝐵
V V F
V F V
F V V
F F V
Margarita Zambrano, César Villacís, Margarita Villacís, Sofía Bayona, Luis Pastor 40
Lenguaje Java. Problemas, Casos y Proyectos.
12. Escribir un programa que permita representar la expresión algebraica: ! 𝐴||𝐵) y probar
una de las salidas de esta puerta lógica, para lo cual se debe leer por teclado el valor de
verdad de A y de B, utilizando las funciones ‘cout’ y ‘cin’. Esta puerta lógica se conoce
como la implicación lógica (𝐴 ⟶ 𝐵), cuya tabla de verdad es:
A B 𝐴⟶𝐵
V V V
V F F
F V V
F F V
13. Escribir un programa que permita representar la expresión algebraica: 𝐴&&! 𝐵) y probar
una de las salidas de esta puerta lógica, para lo cual se debe leer por teclado el valor de
verdad de A y de B, utilizando las funciones ‘cout’ y ‘cin’. Esta puerta lógica se conoce
como la adjunción lógica (𝐴 ↛ 𝐵), cuya tabla de verdad es:
A B 𝐴↛𝐵
V V F
V F V
F V F
F F F
14. Escribir un programa que permita representar la expresión algebraica: 𝐴||! 𝐵) y probar
una de las salidas de esta puerta lógica, para lo cual se debe leer por teclado el valor de
verdad de A y de B, utilizando las funciones ‘cout’ y ‘cin’. Esta puerta lógica se conoce
como la implicación opuesta (𝐴 ⟵ 𝐵), cuya tabla de verdad es:
A B 𝐴⟵𝐵
V V V
V F V
F V F
F F V
15. Escribir un programa que permita representar la expresión algebraica: ! 𝐴&&𝐵) y probar
una de las salidas de esta puerta lógica, para lo cual se debe leer por teclado el valor de
verdad de A y de B, utilizando las funciones ‘cout’ y ‘cin’. Esta puerta lógica se conoce
como la adjunción opuesta (𝐴 ↚ 𝐵), cuya tabla de verdad es:
A B 𝐴↚𝐵
V V F
V F F
F V V
F F F
16. Escribir un programa que solicite al usuario que ingrese los valores de los dos catetos ‘a’
y ‘b’ de un triángulo rectángulo (trabajar con valores flotantes), para calcular el valor de
la hipotenusa, el perímetro y el área de esta figura, utilizando las siguientes fórmulas
matemáticas:
Margarita Zambrano, César Villacís, Margarita Villacís, Sofía Bayona, Luis Pastor 41
Lenguaje Java. Problemas, Casos y Proyectos.
Ejemplo:
Ingrese el precio de un artículo: 60
El precio total incluido el impuesto del 12% es: 67.2
18. Escribir un programa que solicite al usuario que ingrese el largo y el ancho un cuarto en
metros y despliegue el área del piso del cuarto y el costo de alfombrar el mismo,
considerando que el costo del metro cuadrado es de $15 USD. (Trabajar con valores
flotantes)
Ejemplo:
Ingrese el ancho del cuarto: 5
Ingrese el largo del cuarto: 4
El área del piso es: 20
El costo de la alfombra es: 300
19. Escribir un programa que lea la temperatura en grados Celsius y la escriba en grados
Fahrenheit (trabajar con valores flotantes), utilizando la siguiente fórmula matemática:
Figura 1.11.3. a) Un automóvil pasa sobre una elevación que tiene forma de círculo. b) El vector aceleración 𝑎⃗ total
que es la suma de los vectores aceleración tangencial ⃗⃗⃗⃗
𝑎𝑡 y radial ⃗⃗⃗⃗⃗.
𝑎𝑟 (Serway & Jewett, 2005; pp. 87; Ejemplo 4.7).
Margarita Zambrano, César Villacís, Margarita Villacís, Sofía Bayona, Luis Pastor 42
Lenguaje Java. Problemas, Casos y Proyectos.
21. Escribir un programa para automatizar la ley de Gravitación Universal, considerando dos
masas 𝑚1 y 𝑚2 en Kg, que se encuentran separadas una distancia 𝑑 en metros. Calcular
la fuerza de atracción que experimenta las masas, utilizando la siguiente fórmula
matemática. (Problema adaptado de Fisimat, s.f.; Problema 1).
Referencias Bibliográficas
▪ Dean, J., Dean, R., 2009. Introducción a la Programación con Java. MCGraw-Hill. 1era
Edición. ISBN: 978-970-10-7278-3.
▪ Deitel, P., Deitel, H., 2016. Java. Cómo Programar. Décima Edición. Pearson, México.
ISBN: 978-607-32-3802-1.
▪ Docsity (s.f.). Teoría de la relatividad. Sitio Web Educativo. Disponible en:
https://www.docsity.com/es/teoria-de-la-relatividad-fisica-ejercicios/7482343/.
▪ Fisimat, (s.f.). Ley de gravitación universal – Ejercicios resueltos. Sitio Web Educativo:
Física y Matemáticas. Disponible en: https://www.fisimat.com.mx/ley-de-la-gravitacion-
universal/.
▪ Gosling, J., Joy, B., Steele., G., 1996. The Java Language Specification. Addison Wesley,
USA. ISBN: 978-0201634518.
▪ Granizo, E., (2015). Lenguaje C: Teoría y Ejercicios. Universidad de las Fuerzas
Armadas – ESPE. Primera Edición. ISBN: 978-9978-301-357.
▪ Guillen, M., 2000. Cinco ecuaciones que cambiaron el mundo: El poder y la belleza de
las matemáticas. Editorial Debate S.A., Madrid, España. ISBN:9788483062289.
▪ Joyanes, L., Zahonero, I., 2011. Programación en Java 6. Algoritmos y Programación
Orientada a Objetos. McGraw-Hill, México. ISBN: 978-607-15-0618-4.
▪ López, I., 2017. Curso Avanzado de Java - Manual práctico. 1ra Edición, Alfaomega.
ISBN: 978-607-622-853-1.
▪ Luna, F., (2004). C++ Programming for Games, Module I. Game Institute Faculty. E-
Institute Publishing, Inc. USA.
▪ Pérez, A., Quiroz, D., Zambrano, M., Aguilar, K., Parra, P., Guerra, P., Villacís, C., 2014.
Programación en Java para Ingenieros. 1era Edición, Dreams Magnet. ISBN: 978-1-
940600-69-7.
▪ Serway, R., Jewett, J., 2005. Física para Ciencias e Ingeniería. Volumen 1. Séptima
Edición. ISBN: 978-607-481-357-9. Cengage Learning Editores, México.
Margarita Zambrano, César Villacís, Margarita Villacís, Sofía Bayona, Luis Pastor 43
Lenguaje Java. Problemas, Casos y Proyectos.
▪ Sznajdleder, P., 2016. Java a Fondo. Curso de Programación. Alfaomega. Tercera
Edición. ISBN: 978-987-383-211-6.
▪ Verhas, P., 2017. Java 9 Programming by Example: Your guide to software development.
1st Edition, Packt Publishing. ASIN: B01KOG6SWI.
▪ Zambrano, M., Villacís, C., Alvarado, D., Pérez, D., Carvajal, V., Guijarro, J., Prajapati,
Neerav., Sunday-Oyelere, S., 2021. Active learning of programming as a complex
technology applying problem solving, programming case study and OnlineGDB Compiler.
10th International Conference on Educational and Information Technology (ICEIT). DOI:
10.1109/ICEIT51700.2021.9375611. ISBN:978-1-6654-2295-6.
Margarita Zambrano, César Villacís, Margarita Villacís, Sofía Bayona, Luis Pastor 44