0% encontró este documento útil (0 votos)
4 vistas

Capítulo 1 Fundamentos Java Micro

El documento aborda los fundamentos del lenguaje de programación Java, incluyendo su creación, estructura básica, y funciones de entrada y salida de datos. Se presentan ejemplos prácticos de programación, así como problemas y aplicaciones matemáticas utilizando Java. Además, se discuten los operadores aritméticos, relacionales y lógicos, junto con el uso de comentarios en el código.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
4 vistas

Capítulo 1 Fundamentos Java Micro

El documento aborda los fundamentos del lenguaje de programación Java, incluyendo su creación, estructura básica, y funciones de entrada y salida de datos. Se presentan ejemplos prácticos de programación, así como problemas y aplicaciones matemáticas utilizando Java. Además, se discuten los operadores aritméticos, relacionales y lógicos, junto con el uso de comentarios en el código.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 44

Lenguaje Java. Problemas, Casos y Proyectos.

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).

El creador del Lenguaje Java fue el científico de la


computación James Gosling. A su creador le tomo
varios años desarrollarlo y fue publicado en 1995, por
la empresa Sun Microsystems que hoy pertenece a
Oracle. Este lenguaje se deriva del Lenguaje C/C++,
pero tiene menos utilidades de bajo nivel que este
lenguaje (Gosling & Steele, 1996). Java está licenciado
bajo Licencia Pública General de GNU (General Public
License) y también varias de las tecnologías que
maneja.

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.

1.1. Creación de un Programa en Lenguaje Java


Un programa es una lista de instrucciones debidamente estructuradas para que la computadora
ejecute una serie de operaciones o cumpla un propósito. Una operación podría ser la suma de
dos números, el perímetro y el área de un círculo, el volumen de un cilindro o la impresión de
algunos datos en la pantalla de la computadora. (Ver Figura 1.1).

Figura 1.1. Ejemplo de un Programa en Java.

1.1.1. Utilización de una Herramienta de Programación para el Lenguaje


Java
Existe una gran variedad de herramientas de software o ambientes de desarrollo integrado (IDE),
para programar en lenguaje Java, tales como: NetBeans, Eclipse, BlueJ, IntelliJ IDEA, jGRASP,
entre otras. (Ver Figura 1.2).

Figura 1.2. IDE NetBeans para el Lenguaje Java.

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).

Programa 1.1. Código del programa.


/*******************************************************
JavaConsolaPrograma_1_1
*******************************************************/

// Paquete de la Lógica.
package PaqueteLogica;

// Clase del programa.


public class Programa
{
// Función principal.
public static void main(String[] args)
{
// Función printf(), que imprime mensajes de texto.
System.out.printf("Hola mundo.\n");
System.out.printf("Bienvenidos al Lenguaje Java.\n");
}
}

Ejecución 1.1. Salida del programa.

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.

Luego nosotros desplegamos el texto: “Bienvenidos al Lenguaje Java.” 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("Bienvenidos al Lenguaje Java.\n");

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).

En el segundo paso que es la interpretación, este lenguaje intermedio es interpretado por el


intérprete de Java, denominado Java Virtual Machine (JVM), que deberá existir en la plataforma
en la que queramos ejecutar el código. (Ver Figura 1.3).

Figura 1.3. Proceso de Compilación, Interpretación y Ejecución.

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.

1.1.4. Uso de Comentarios en un Programa

El lenguaje Java, maneja dos tipos de comentarios:

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).

1.2. Estructura Básica de un Programa en Java


En general la estructura básica de un programa en Java (Pérez et al., 2014), consta de las
siguientes partes:

a) Paquetes del programa.


b) Directivas import.
c) La función principal.

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.

Figura 1.4. Estructura básica de un programa en Java.

1.2.1. Paquetes del programa


Los paquetes son mecanismos que usa Java para facilitar la modularidad del código. Un paquete
puede contener una o más definiciones de interfaces y clases, organizándose generalmente
como un archivo. Para utilizar los elementos de un paquete es necesario importar este en el
módulo de código en curso, usando para ello las directivas “import”. En la Figura 1.5 se muestra
un ejemplo del uso de tres paquetes en una aplicación de Java que maneja una agenda
telefónica.

Figura 1.5. Paquetes de un programa en Java.

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:

Tabla 1.1: Librerías básicas de Java.


Librería Descripción
import java.lang Librería que contiene clases esenciales para el lenguaje Java y
declaraciones de objetos, threads, excepciones, wrappers de los tipos
de datos primitivos y otras clases fundamentales, entre las cuales
están: a) Math; b) Float; c) Double; d) Integer; e) Long; f) Boolean; g)
String; h) System. Esta librería es el único paquete que se importa
automáticamente en Java.
import java.io Librería que soporta flujos de entrada y salida. Esta librería contiene
varias clases entre las más importantes están: a) DataInput; b)
DataOutput; c) BufferedInputStream; d) BufferedOutputStream; e)
BufferedInputStream; f) BufferedReader; g) BufferedWrite.
import java.util Librería que contiene clases de utilidad como enumeraciones,
contenedores, genéricos, vectores, hashtables, números aleatorios,
fecha, hora y propiedades del sistema. Las clases más importantes
son: a) Scanner; b) Collection; c) ArrayList; d) List; e) SortedSet; f)
Random; g) Vector; h) Date.

En nuestro programa, el Programa 1.1, se invoca automáticamente a la librería:

import java.lang

De esta librería se utiliza la clase “System” para imprimir mensajes utilizando la función “printf()”.

1.2.3. La Función Principal

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.

Figura 1.6. Función principal en Java.

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++

La Ingeniería de Software y la Metodología de Investigación Científica se puede aplicar de


manera conjunta para la solución de problemas adaptados al desarrollo de software, donde
desde el punto de vista pedagógico, la Metodología del Aprendizaje Basado en Problemas
(Problem-Based Learning - PBL) es la más recomendable como parte del aprendizaje activo en
el desarrollo de habilidades y la adquisición de conocimientos actualizados y relevantes por parte
del estudiante, a través del planteamiento y la solución de problemas con diferentes niveles de
dificultad (Zambrano et al., 2021). En este capítulo se van a aplicar tres fases en la resolución de
problemas de programación, considerando los aspectos de la ingeniería y el método científico
dentro de cada fase.

1. Planteamiento del Problema: En esta fase, se plantea claramente el enunciado del


problema que se desea resolver.
2. Codificación del Programa: En esta fase, se escribe el código del programa que
permite automatizar un problema lógico-matemático o de cualquier área de las ciencias
básicas como la Física, la Química, la Biología y las Matemáticas.
3. Pruebas del Programa: En esta fase, se verifica la validez de la solución del problema
mediante la ejecución correcta del programa.

1.3. Funciones de Entrada y Salida de Datos


El Lenguaje Java proporciona un grupo de funciones para el manejo de la salida de datos y un
grupo de clases para la entrada de datos. Estas funciones y estas clases son parte de librerías
de encabezado que maneja Java. En la Figura 1.7 se muestra un ícono que representa a las
funciones de entrada y salida de datos.

Figura 1.7. Funciones de Entrada y Salida de Datos.

1.3.1. Funciones de Salida de Datos


El lenguaje Java maneja varias funciones de salida, entre las más importantes están: a) printf();
b) println(); c) print. Todas estas funciones utilizan la salida estándar de datos “System.out” para
enviar información a la consola y la palabra reservada “System” que es una clase de Java que
maneja operaciones de salida de datos (Dean & Dean, 2009).

1.3.1.1. Función de Salida printf()

La función “printf()” permite imprimir cadenas de caracteres y variables utilizando


especificadores de formato y secuencias de escape tal y como lo hace la función “printf()” del
Lenguaje C/C++ (Dean & Dean, 2009). Además, se pueden concatenar cadenas de caracteres
con mensajes y variables utilizando el operador de suma “+”. El programa 1.1 es capaz de
desplegar datos desde la ventana de la consola. Al examinar el código del programa 1.1 se
observa que se invoca dos veces a la función “printf()” para imprimir mensajes de texto.

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).

1.3.1.3. Función de Salida print()

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).

1.3.2. Especificadores de Formato


El formato de las cadenas de texto contiene símbolos de formateo de distintos tipos de datos.
Estos símbolos son reemplazados por valores almacenados en variables. Los principales
especificadores de formato que maneja el lenguaje Java son los que se muestran en la Tabla 1.2
(Granizo, 2015).

Tabla 1.2. Especificadores de Formato.

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

1.3.3. Secuencias de Escape


Existen caracteres especiales, llamados secuencias de escape o caracteres de escape. Una
secuencia de escape está simbolizada con un backslash “\” seguido por un caracter(es) común.
Por lo tanto, en el Ejercicio 1.1, el caracter de nueva línea está simbolizado por “\n”. La Tabla 1.3
muestra las secuencias de escape más utilizadas (Granizo, 2015).

Tabla 1.3. Secuencias de Escape.


Código Descripción
\n Caracter de nueva línea: Representa a una nueva línea (intro).
\t Caracter de tabulación: Representa a una tabulación (tab space).
\a Caracter de alerta: Representa a una alerte.
\\ Backslash: Representa a un caracter de backslash.
\’ Símbolo de comilla simple.
\” Símbolo de comillas dobles.

1.3.4. Función de Entrada de Datos


Se utiliza la entrada estándar de datos “System.in” para recibir información desde la consola y la
palabra reservada “System” es una clase de Java que maneja operaciones de entrada de datos
(Dean & Dean, 2009). Para utilizar la entrada estándar de datos “System.in” se debe instanciar
un objeto de tipo Scanner que para este caso lleva el nombre de ‘escaneo’. En este caso el objeto
“escaneo” llama a la función “nextLine()” que permite leer una cadena de texto (String), como se
puede ver en la siguiente línea de código:

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.

Programa 1.2. Código del programa.


/*******************************************************
JavaConsolaPrograma_1_2
*******************************************************/

// Paquete de la Lógica.
package PaqueteLogica;

// Librerías.
import java.util.Scanner;

// Clase del programa.


public class Programa
{
// Función principal.
public static void main(String[] args)
{
// Declaración de variables.
String primerNombre = ""; // Variable para leer un nombre.
Scanner escaneo = new Scanner(System.in); // Objeto de tipo Scanner.

// Imprimir el siguiente mensaje:


// "Introduzca su primer nombre y presione INTRO: "
System.out.printf("Introduzca su primer nombre y presione INTRO: ");
// Leer el primer nombre de un usuario, utilizando el objeto sc
// que llama a la función nextLine().
primerNombre = escaneo.nextLine();

// Imprimir un mensaje de Hola e imprimir el contenido de la


// variable primerNombre.
System.out.printf("Hola " + primerNombre + "\n");
}
}

Ejecución 1.2. Salida del programa.

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:

System.out.printf("Introduzca su primer nombre y presione INTRO: ");

Luego nosotros le pedimos al usuario que ingrese su primer nombre con la siguiente instrucción:

primerNombre = escaneo.nextLine();

Finalmente nosotros desplegamos el mensaje “Hola, ” seguido de un valor String almacenado en


la variable primerNombre y seguido de un salto de línea “\n”, con la siguiente instrucción:

System.out.printf("Hola " + primerNombre + "\n");

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();

El comando escaneo.nextLine() le pide al usuario que ingrese un texto que corresponde a su


nombre y luego el programa guarda en una variable de tipo String llamada primerNombre, para
lo cual se debe instanciar un objeto de tipo Scanner llamdo escaneo que sirve para leer variables.

Scanner escaneo = new Scanner(System.in);

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:

System.out.printf("Hola " + primerNombre + "\n");

1.4.1. Definición de Variable


Una variable se define como un elemento que ocupa una región física del sistema de memoria
de acceso aleatorio (RAM) y almacena un valor de algún tipo (Joyanes & Zahonero, 2011).

Figura 1.8. Definición de Variable.

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.

1.4.2. Tipos de Datos en Java


El tipo de dato define un conjunto de valores que puede tener una variable, junto con un conjunto
de operaciones que se pueden realizar sobre esa variable (Pérez et al., 2014). Los tipos de datos
comunes son los enteros, números reales y caracteres alfanuméricos. La Tabla 1.4 resume todos
los tipos de datos que soporta el lenguaje Java.

Tabla 1.4. Tipos de Datos.


Tipo de Descripción Rango Tamaño en
Dato Bytes
char Utilizado para almacenar un simple carácter [-128, 127] 1
tales como: ‘a’, ‘b’, ‘c’, etc.
short Utilizado para almacenar valores enteros [-32768, 32767] 2
pequeños.
int Utilizado para almacenar valores enteros. [-2147483648, 4
2147483647]
long Utilizado para almacenar valores enteros [-2147483648, 4
grandes. 2147483647]

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.

1.4.3. Declaración y Definición de Variables


Una variable se declara de acuerdo con la siguiente sintaxis:
Sintaxis:

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.

1.4.4. Operador de Asignación Igual (=)


El símbolo “=”, en Java, se conoce como el operador de asignación, que permite asignar
valores a las variables y a fórmulas matemáticas (Pérez et al., 2014). Este operador no tiene
nada que ver con el operador de igualdad que se utiliza para comparación, donde el símbolo que
se ha definido en Java para la comparación es el “==”.

Se puede declarar y definir una variable al mismo tiempo en Java. Por ejemplo:

char letra = 'M';


int num_entero = 20;
float num_flotante = 17.23;

Debido a que en la declaración de las variables se almacena basura, se recomienda siempre


definir o inicializar las variables después de la declaración con algún valor por defecto.
Generalmente, se utiliza el valor de cero para inicializar valores numéricos y un carácter en
blanco (‘ ‘) para valores de caracteres.

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.

Programa 1.3. Código del programa.


/*******************************************************
JavaConsolaPrograma_1_3
*******************************************************/

// Paquete de la Lógica.
package PaqueteLogica;

// Librerías.
import java.util.Scanner;

// Clase del programa.


public class Programa
{
// Función principal.
public static void main(String[] args)
{
// Declaración y definición de variables.
char letra = ' ';
int num_entero = 0;
float num_flotante = 0.0f;
// Objeto de tipo Scanner.
Scanner escaneo = new Scanner(System.in);

// Imprimir un mensaje y leer un dato.


System.out.printf("Ingrese una letra: ");
letra = escaneo.next().charAt(0);
// Imprimir un mensaje y leer un dato.
System.out.printf("Ingrese un número entero: ");
num_entero = escaneo.nextInt();
// Imprimir un mensaje y leer un dato.
System.out.printf("Ingrese un número flotante: ");
num_flotante = escaneo.nextFloat();

// Imprimir un INTRO (salto de línea).


System.out.printf("\n");

// Imprimir los valores que el usuario ha ingresado.


System.out.printf("Letra: %c\n", letra);
System.out.printf("Número entero: %d\n", num_entero);
System.out.printf("Número flotante: %f\n", num_flotante);
}
}

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.

Primeramente, en el programa 1.3, se declaran y se definen tres variables: a) letra, de tipo


carácter (char), inicializada con el valor de un espacio en blanco (‘ ‘); b) num_entero, de tipo
entero (int), inicializada con el valor de cero (0); c) num_flotante, de tipo flotante (float),
inicializada con el valor de cero (0.0f).

Luego, en este programa se utiliza la entrada estándar de datos “System.in” instanciando un


objeto de tipo Scanner llamado ‘escaneo’, que como se indicó en la sección 1.3.2, sirve para leer
datos (entrada por consola). En este caso se leen tres datos, uno de tipo char, otro de tipo int y
otro de tipo float, cuyas variables van a ser modificadas en su contenido con valores que el
usuario ingresa por teclado a la consola.

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.4.5. Nombres de Variables


Como se mostró en el Ejercicio 1.3, cuando se declaran y/o se definen variables, nosotros
debemos ponerles un nombre a éstas (identificador), para podernos referir a cada una de las
variables dentro del programa (Deitel & Deitel, 2016). Los nombres de las variables pueden tener
cualquier cosa, con algunas excepciones, como se mencionan a continuación:

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).

1.5. Operadores Aritméticos


Adicionalmente a la declaración, definición, lectura e impresión de variables de diferentes tipos
de datos que maneja el lenguaje Java, nosotros podemos ejecutar operaciones aritméticas
básicas entre ellas, como la suma, la resta, la multiplicación, la división, entre otras.

1.5.1. Operadores Aritméticos Binarios


El lenguaje Java maneja cinco operadores aritméticos binarios:

1. Operador Suma (+).


2. Operador Resta (-).
3. Operador de Multiplicación (*).
4. Operador de División (/).
5. Operador de Módulo (%).

Las operaciones de suma, resta,


multiplicación y división están definidas
para todos los tipos de datos numéricos. El
operador de módulo está definido sólo para
operaciones con enteros (López, 2017).
(Ver Figura 1.9). El programa 1.4 muestra
el uso de estos operadores.
Figura 1.9. Operadores Aritméticos Binarios.

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.

Programa 1.4. Código del programa.


/*******************************************************
JavaConsolaPrograma_1_4
*******************************************************/

// Paquete de la Lógica.
package PaqueteLogica;

// Clase del programa.


public class Programa
{
// Función principal.
public static void main(String[] args)
{
// Declaración de variables y definición de expresiones.
int a = 7 + 2;
int b = 7 - 2;
int c = 7 * 2;
int d = 7 / 2;
int e = 7 % 2;

Margarita Zambrano, César Villacís, Margarita Villacís, Sofía Bayona, Luis Pastor 16
Lenguaje Java. Problemas, Casos y Proyectos.

// Imprimir los valores de las expresiones numéricas.


System.out.printf("a = %d\n", a);
System.out.printf("b = %d\n", b);
System.out.printf("c = %d\n", c);
System.out.printf("d = %d\n", d);
System.out.printf("e = %d\n", e);
}
}

Ejecución 1.4. Salida del programa.

1.5.2. El Operador de Módulo


El lenguaje Java maneja un operador especial que es el de módulo, que retorna el resto de una
división entera. Por ejemplo, al dividir la fracción 7 / 2, el resto de la división es 1; al dividir la
fracción 7 / 13, el resto de la división es 7; y al dividir la fracción 23 / 8, el resto de esta división
es 7 que a su vez es el numerador de la fracción 7 / 8 que forma parte de la fracción impropia
7
2 , como se muestra a continuación:
8

7 7 2 7 7 13 23 23 8 7
= = = 2
2 1 3 13 7 0 8 7 2 8

1.5.3. Expresiones Aritméticas Compuestas


El lenguaje Java define las siguientes expresiones aritméticas compuestas que utilizan un
operador aritmético y el operador de asignación junto a dos operandos (Deitel & Deitel, 2016).
La Tabla 1.5 resume lo expuesto:

Tabla 1.5. Expresiones Aritméticas Compuestas.


Expresión Aritmética Descripción Ejemplo
Compuesta
x = x + y; Asigna el valor de x + y en la int x = 5;
misma variable x. int y = 7;
x = x + y; // x = 12
x = x - y; Asigna el valor de x - y en la int x = 5;
misma variable x. int y = 7;
x = x - y; // x = -2
x = x * y; Asigna el valor de x * y en la int x = 5;
misma variable x. int y = 7;
x = x * y; // x = 35
x = x / y; Asigna el valor de x / y en la int x = 5;
misma variable x. int y = 7;
x = x / y; // x = 0
x = x % y; Asigna el valor de x % y en la int x = 5;
misma variable x. int y = 7;
x = x % y; // x = 5

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.

Programa 1.5. Código del programa.


/*******************************************************
JavaConsolaPrograma_1_5
*******************************************************/

// Paquete de la Lógica.
package PaqueteLogica;

// Librerías.
import java.util.Scanner;

// Clase del programa.


public class Programa
{
// Función principal.
public static void main(String[] args)
{
// Declaración de variables.
int x = 0, y = 0;
// Objeto de tipo Scanner.
Scanner escaneo = new Scanner(System.in);

// Imprimir un mensaje de información.


System.out.printf("Uso de las operaciones aritméticas compuestas.\n");
System.out.printf("\n");

// Imprimir un mensaje y leer un dato de tipo entero.


System.out.printf("Ingrese el primer número: ");
x = escaneo.nextInt();

// Imprimir un mensaje y leer un dato de tipo entero.


System.out.printf("Ingrese el segundo número: ");
y = escaneo.nextInt();

// Almacenar en variables separadas el valor de 'x', de tal


// manera que cada variable sea independiente entre sí.
int a = x;
int b = x;
int c = x;
int d = x;
int e = x;

// Utilizar las expresiones aritméticas compuestas.


a = a + y;
b = b - y;
c = c * y;
d = d / y;
e = e % y;

// Imprimir los valores de las expresiones numéricas.


System.out.printf("\n");
System.out.printf("x = x + y = %d\n", a);
System.out.printf("x = x - y = %d\n", b);
System.out.printf("x = x * y = %d\n", c);
System.out.printf("x = x / y = %d\n", d);
System.out.printf("x = x %% y = %d\n", e);

Margarita Zambrano, César Villacís, Margarita Villacís, Sofía Bayona, Luis Pastor 18
Lenguaje Java. Problemas, Casos y Proyectos.
}
}

Ejecución 1.5. Salida del programa.

1.5.4. Operadores Aritméticos Unarios


Un operador unario es una operación que actúa sobre una variable u operando (Deitel & Deitel,
2016). La Tabla 1.6 resume los tres operadores unarios que maneja el lenguaje Java.

Tabla 1.6. Operadores Unarios.


Operador Unario Descripción Ejemplo
Operador de Negación: - Niega el operando. int a = 5;
int b = -a; // b = -5
Operador de Incremento: ++ Incrementa el valor del operando int x = 5;
en uno. Este operador puede x++; // x = 6 (postfijo)
tener una notación prefija o
postfija.
Operador de Decremento: -- Decrementa el valor del int y = 5;
operando en uno. Este operador y--; // y = 4 (postfijo)
puede tener una notación prefija
o postfija.

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.

En este curso de programación solo se incluye el uso de los operadores ++ y -- en notación


postfija, debido a la complejidad de comprensión que implica la notación prefija. El siguiente
programa muestra el uso de estos operadores.

Problema 1.6: Escribir un programa que permita probar el uso de los operadores aritméticos
unarios en expresiones matemáticas simples.

Programa 1.6. Código del programa.


/*******************************************************
JavaConsolaPrograma_1_6
*******************************************************/

// 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.

// Clase del programa.


public class Programa
{
// Función principal.
public static void main(String[] args)
{
// Uso de los operadores aritméticos unarios en expresiones simples.
System.out.printf("Uso de los operadores aritméticos unarios");
System.out.printf(" en expresiones simples.");
System.out.printf("\n");

// 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");
}
}

Ejecución 1.6. Salida del programa.

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.

Tabla 1.6.1. Prueba de escritorio manual del programa.


Nº Paso a b x y
1 5
2 -5
3 5
4 6
5 5
6 4

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.

Figura 1.10. Herramienta de depuración.

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.

Figura 1.11. Depuración de paso a paso por procedimientos.

Figura 1.12. Prueba de escritorio con la computadora.

1.5.6. Precedencia de Operadores Aritméticos


Considere la siguiente sentencia:

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:

int x = (((7 + 3) / 2) * (6 - 2)) - (18 / (7 + 2));


= ((10 / 2) * 4) - (18 / 9);
= (5 * 4) - 2;
= 20 - 2;
= 18;

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.

El siguiente programa ilustra cómo trabaja la precedencia de operadores con expresiones


numéricas.

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.

Programa 1.7. Código del programa.


/*******************************************************
JavaConsolaPrograma_1_7
*******************************************************/

// Paquete de la Lógica.
package PaqueteLogica;

// Librerías.
import java.util.Scanner;

// Clase del programa.


public class Programa
{
// Función principal.
public static void main(String[] args)
{
// Declaración de variables y definición de expresiones.

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));

// Imprimir los valores de las expresiones numéricas.


System.out.printf("x = %d\n", x);
System.out.printf("y = %d\n", y);
System.out.printf("z = %d\n", z);
}
}

Ejecución 1.7. Salida del programa.

1.6. Operadores Relacionales


Los operadores relacionales se emplean para comparar o determinar alguna relación elemental
entre dos variables o también entre dos expresiones y generar un valor de verdadero (1) o de
falso (0) (Sznajdleder, 2016). La Tabla 1.7 resume los operadores relacionales que maneja el
lenguaje Java.

Tabla 1.7. Operadores Relacionales.


Operador Significado Descripción Ejemplo
== Igual a El operador de igualdad que se usa en el lenguaje a == b
C/C++ es el signo de doble igual ‘==’, puesto que el
signo de simple igualdad ‘=’ es el operador de
asignación. Este operador retorna el valor de
verdadero si los dos operandos o expresiones son
iguales, caso contrario retorna el valor de falso.
!= No igual a El operador de desigualdad retorna el valor de a != b
verdadero si los dos operandos o expresiones son
desiguales, caso contrario retorna el valor de falso.
> Mayor que El operador de mayor que retorna verdadero si el a>b
operando o la expresión de la izquierda es mayor que
el operando o la expresión de la derecha, caso
contrario retorna el valor de falso.
< Menor que El operador de menor que retorna verdadero si el a<b
operando o la expresión de la izquierda es menor que
el operando o la expresión de la derecha, caso
contrario retorna el valor de falso.
>= Mayor o igual El operador de mayor o igual que retorna verdadero a >= b
que si el operando o la expresión de la izquierda es mayor
o igual que el operando o la expresión de la derecha,
caso contrario retorna el valor de falso.
<= Menor o igual El operador de menor o igual que retorna verdadero a <= b
que si el operando o la expresión de la izquierda es
menor o igual que el operando o la expresión de la
derecha, caso contrario retorna el valor de falso.

El siguiente programa ilustra cómo trabajan estos operadores relacionales.

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.

Programa 1.8. Código del programa.


/*******************************************************
JavaConsolaPrograma_1_8
*******************************************************/

// Paquete de la Lógica.
package PaqueteLogica;

// Librerías.
import java.util.Scanner;

// Clase del programa.


public class Programa
{
// Función principal.
public static void main(String[] args)
{
// Declaración de variables.
int a = 0, b = 0;

boolean EsIgual;
boolean EsDesigual;
boolean EsMayor;
boolean EsMenor;
boolean EsMayorOigual;
boolean EsMenorOigual;

// Objeto de tipo Scanner.


Scanner escaneo = new Scanner(System.in);

// Imprimir un mensaje de información.


System.out.println("Uso de los operadores relacionales.");
// Imprimir un INTRO (salto de línea).
System.out.print("\n");

// Imprimir un mensaje y leer un dato de tipo entero.


System.out.print("Ingrese el primer número: "); // Salida.
a = escaneo.nextInt(); // Entrada.
// Imprimir un mensaje y leer un dato de tipo entero.
System.out.print("Ingrese el segundo número: "); // Salida.
b = escaneo.nextInt(); // Entrada.
// Imprimir un INTRO (salto de línea).
System.out.print("\n");

// Almacenar en las variables booleanas las diferentes comparaciones.


EsIgual = a == b;
EsDesigual = a != b;
EsMayor = a > b;
EsMenor = a < b;
EsMayorOigual = a >= b;
EsMenorOigual = a <= b;

// Imprimir los valores de verdad o de falsedad de


// las diferentes comparaciones.
System.out.println("¿El número " + a + " es igual al número " + b +
"? " + EsIgual);

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);
}
}

Ejecución 1.8. Salida del programa.

1.7. Operadores Lógicos


Los operadores lógicos o puertas lógicas se utilizan con operandos o expresiones para devolver
un valor de verdadero (1) o un valor de falso (0) (Sznajdleder, 2016). A estos operadores también
se los denomina como operadores boolenos, en honor de George Boole, creador del álgebra de
Boole. La Tabla 1.8, 1.9 y 1.10 resumen las tablas de verdad de los tres operadores lógicos o
puertas lógicas que maneja el lenguaje Java.

Tabla 1.8. Tabla de verdad del operador lógico AND (&&).


Operandos Operador Lógico
A B A && B
Verdadero (1) Verdadero (1) Verdadero (1)
Verdadero (1) Falso (0) Falso (0)
Falso (0) Verdadero (1) Falso (0)
Falso (0) Falso (0) Falso (0)

Tabla 1.9. Tabla de verdad del operador lógico OR (||).


Operandos Operador Lógico
A B A || B
Verdadero (1) Verdadero (1) Verdadero (1)
Verdadero (1) Falso (0) Verdadero (1)
Falso (0) Verdadero (1) Verdadero (1)
Falso (0) Falso (0) Falso (0)

Tabla 1.10. Tabla de verdad del operador lógico NOT (!).


Operando Negación
A !A

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)

Adicionalmente a estas puertas lógicas, se puede implementar la puerta lógica XOR u OR


exclusiva mediante la siguiente expresión algebraica: (A || B) && (!A || !B), cuya tabla de verdad
resultante se muestra en la Tabla 1.11.

Tabla 1.11. Tabla de verdad de la puerta lógica XOR.


Operandos Operador Lógico
A B A XOR B
Verdadero (1) Verdadero (1) Falso (0)
Verdadero (1) Falso (0) Verdadero (1)
Falso (0) Verdadero (1) Verdadero (1)
Falso (0) Falso (0) Falso (0)

El siguiente programa ilustra cómo trabajan estos operadores lógicos.

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.

Programa 1.9. Código del programa.


/*******************************************************
JavaConsolaPrograma_1_9
*******************************************************/

// Paquete de la Lógica.
package PaqueteLogica;

// Librerías.
import java.util.Scanner;

// Clase del programa.


public class Programa
{
// Función principal.
public static void main(String[] args)
{
// Declaración de variables.
boolean A = false;
boolean B = false;
// Objeto de tipo Scanner.
Scanner escaneo = new Scanner(System.in);

// Imprimir un mensaje de información.


System.out.println("Uso de la compuerta lógica XOR.");
// 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 0 para falso o 1 para verdadero: "); // Salida.
A = escaneo.nextBoolean(); // Entrada.
// Imprimir un mensaje y leer un dato de tipo bool.
System.out.print("Ingrese 0 para falso o 1 para verdadero: "); // Salida.
B = escaneo.nextBoolean(); // Entrada.

// Imprimir un salto de línea (INTRO).


System.out.print("\n");

Margarita Zambrano, César Villacís, Margarita Villacís, Sofía Bayona, Luis Pastor 27
Lenguaje Java. Problemas, Casos y Proyectos.

// Evaluar la expresión algebraica equivalente al XOR.


boolean isXOR = (A || B) && (!A || !B);

// Imprimir el resultado obtenido según la tabla de verdad del XOR.


System.out.println("A, B, A XOR B");
System.out.println(A + ", " + B + ", " + isXOR);
}
}

Ejecución 1.9. Salida del programa.

1.8. Fórmulas Matemáticas


Adicionalmente al uso de expresiones aritméticas, el Java permite estructurar fórmulas
matemáticas para diferentes propósitos como: calcular el área de un círculo, calcular el volumen
de un cilindro, calcular el tiempo de vuelo de un proyectil que sigue una trayectoria parabólica,
etc. Todos estos problemas y más, se resuelven utilizando fórmulas matemáticas (Pérez et al.,
2014). El lenguaje Java para esto tiene una librería de funciones matemáticas que pertenecen a
la clase “Math”. La Figura 1.13 muestra 5 de las ecuaciones consideradas que cambiaron el
mundo (Guillen, 2000):

1) Ley de Gravitación Universal: ( ISAAC NEWTON )


𝑚1 ∙ 𝑚2
𝐹=𝐺
𝑑2
2) Ley de la Presión Hidrodinámica: ( DANIEL BERNOULLI )
1 1
𝑃1 + 𝜌𝑣12 + 𝜌𝑔ℎ1 = 𝑃2 + 𝜌𝑣22 + 𝜌𝑔ℎ2
2 2
3) Ley de la Inducción Electromagnética: ( MICHAEL FARADAY )
𝑑Φ
𝜀=
𝑑𝑡
4) Segunda Ley de la Termodinámica: ( RUDOLF CLAUSIUS )
∆𝑄
∆𝑆 =
𝑇
5) Teoría de la Relatividad Especial: ( ALBERT EINSTEIN )
𝐸 = 𝑚 ∙ 𝑐2
Figura 1.13. Cinco ecuaciones que cambiaron el mundo (Guillen, M., 2000).

1.8.1. Funciones de la Clase Math


Como se mencionó en la sección 1.2.2, la Librería “java.lang” contiene clases esenciales para el
lenguaje Java y declaraciones de objetos threads, excepciones, wrappers de los tipos de datos
primitivos y otras clases fundamentales como la “Math”. La clase “Math” (Mathematical), es una
librería de clases que tiene funciones para realizar operaciones matemáticas básicas, tales como:
funciones trigonométricas, funciones exponenciales, funciones logarítmicas, funciones para

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:

Tabla 1.12. Algunas de las Funciones Matemáticas de la clase “Math”.


Declaración de la Función Descripción
double sqrt(double x); Retorna √x.
double pow(double x, double y); Retorna x y .
double fabs(double x); Retorna |x|.
double exp(double x); Retorna ex .
double log(double x); Retorna ln⁡(x).
double cos(double x); Retorna cos⁡(𝑥).
double sin(double x); Retorna sen⁡(𝑥).
double tan(double x); Retorna tan⁡(𝑥).
double acos(double x); Retorna 𝑎𝑟𝑐cos⁡(𝑥).
double asin(double x); Retorna 𝑎𝑟𝑐sen⁡(𝑥).
double atan(double x); Retorna 𝑎𝑟𝑐tan⁡(𝑥).
double atan2(double y, double x); Retorna 𝑎𝑟𝑐tan⁡(𝑦/𝑥).

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.

El siguiente programa ilustra cómo trabajan las diferentes funciones matemáticas.

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.

Programa 1.10. Código del programa.


/*******************************************************
JavaConsolaPrograma_1_10
*******************************************************/

// Paquete de la Lógica.
package PaqueteLogica;

// Librerías.
import java.util.Scanner;

// Clase del programa.


public class Programa
{
// Función principal.
public static void main(String[] args)
{
// Declaración de variables.
float x = 0.0f;
// Objeto de tipo Scanner.
Scanner escaneo = new Scanner(System.in);

// Imprimir un mensaje de información.

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");

// Imprimir el resultado obtenido según la tabla de verdad del XOR.


System.out.println("cos(" + x + ") = " + Math.cos(x));
System.out.println("sen(" + x + ") = " + Math.sin(x));
System.out.println("raiz_cuadrada(" + x + ") = " + Math.sqrt(x));
System.out.println("log_natural(" + x + ") = " + Math.log(x));
System.out.println("potencia_numero(" + x + ", 3) = " + Math.pow(x, 3));
System.out.println("valor_absoluto(" + -x + ") = " + Math.abs(-x));
}
}

Ejecución 1.10. Salida del programa.

1.8.2. Aplicaciones de las Funciones de la Clase Math


A continuación, se presentan algunos problemas que muestran el uso de las funciones
matemáticas de la clase “Math” enfocadas al área de Geometría, Trigonometría y Física.

Problema 1.11: Escribir un programa que calcule el área y el perímetro de un cuadrado,


utilizando las siguientes fórmulas matemáticas:

𝑝 = 4𝑙 (1) Perímetro del cuadrado


á𝑟𝑒𝑎 = 𝑙 2 (2) Área del cuadrado

Siendo “l” el valor del lado del cuadrado. Además, trabajar con valores flotantes y con las
funciones matemáticas de la clase “Math”.

Programa 1.11. Código del programa.


/*******************************************************
JavaConsolaPrograma_1_11
*******************************************************/

// 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;

// Clase del programa.


public class Programa
{
// Función principal.
public static void main(String[] args)
{
// Declaración de variables.
float lado; // Entrada: Lado del cuadrado.
float p; // Salida: Perímetro del cuadrado.
float area; // Salida: Área del cuadrado.

// Objeto de tipo Scanner.


Scanner escaneo = new Scanner(System.in);

// Imprimir un mensaje de información y dos saltos de línea.


System.out.printf("Perímetro y Área de un Cuadrado.\n\n");

// Imprimir un mensaje y leer el lado del cuadrado.


System.out.printf("Ingrese el valor del lado del cuadrado: "); // Salida.
lado = escaneo.nextFloat(); // Entrada.

// Imprimir un salto de línea.


System.out.printf("\n");

// Calcular el perímetro del cuadrado.


p = 4 * lado;
// Calcular el área del cuadrado.
area = (float)Math.pow(lado, 2);

// Imprimir el perímetro y el área del cuadrado.


System.out.printf("Perímetro: %f\n", p);
System.out.printf("Área: %f\n", area);
}
}

Ejecución 1.11. Salida del programa.

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:

𝑝 = 2𝜋𝑟 (1) Perímetro del círculo


á𝑟𝑒𝑎 = 𝜋𝑟 2 (2) Área del círculo

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;

// Clase del programa.


public class Programa {

// 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);

// Imprimir un mensaje de información y dos saltos de línea.


System.out.printf("Perímero y Área de un Círculo.\n\n");
// Leer el radio del círculo utilizando la variable 'radio'.
System.out.print("Ingrese el valor del radio: ");
radio = escaneo.nextFloat(); // Entrada.

// Calcular el perímetro.
perimetro = 2 * (float) Math.PI * radio;
// Calcular el área.
area = (float) Math.PI * radio * radio;

// Imprimir el valor de la variable 'perimetro' y de la variable 'area'.


System.out.println("El perímetro es: " + perimetro);
System.out.println("El área es: " + area);
}
}

Salida 1.12: Salida del programa.

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:

𝑐 = √𝑎2 + 𝑏 2 (1) Hipotenusa de un triángulo rectángulo


𝑎 (2) Primer ángulo del triángulo rectángulo
𝐴̂ = 𝑎𝑟𝑐𝑡𝑎𝑛 ( )
𝑏
𝑏 (3) Segundo ángulo del triángulo rectángulo
𝐵̂ = 𝑎𝑟𝑐𝑡𝑎𝑛 ( )
𝑎
Siendo ‘a’ y ‘b’ los valores de los catetos del triángulo rectángulo. (Trabajar con valores flotantes).

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;

// Clase del programa.


public class Programa {

// 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);

// Imprimir un mensaje de información y dos saltos de línea.


System.out.printf("Ángulos e Hipotenusa de un Triángulo Rectángulo.\n\n");
// Leer el valor del cateto 1, utilizando la variable 'a'.
System.out.printf("Ingrese el valor del cateto 'a': ");
a = escaneo.nextFloat(); // Entrada.
// Leer el valor del cateto 2, utilizando la variable 'b'.
System.out.printf("Ingrese el valor del cateto 'b': ");
b = escaneo.nextFloat(); // Entrada.

// 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;

// Imprimir el valor de la variable 'hipotenusa'.


System.out.printf("La hipotenusa es: %f\n", hipotenusa);
// Imprimir el valor de la variable 'anguloA'.
System.out.printf("El ángulo A es: %f grados\n", anguloA);
// Imprimir el valor de la variable 'anguloB'.
System.out.printf("El ángulo B es: %f grados\n", anguloB);
}
}

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).

𝑔 ∙ 𝑥2 (1) Ecuación de la trayectoria de un proyectil


𝑦 = 𝑥 ∙ 𝑡𝑎𝑛(𝜃) − 2
2
2 ∙ 𝑣0 ∙ (𝑐𝑜𝑠(𝜃))
ℎ = √𝑥 2 + 𝑦 2 (2) Hipotenusa de un triángulo rectángulo
𝑥° ∙ 𝜋 (3) Fórmula de conversión de grados a radianes
𝑥=
180°

Figura 1.14.1. Tiro parabólico en un plano inclinado. (Serway & Jewett, 2005).

Por ejemplo, con los siguientes datos:


𝑥 = 27.85⁡𝑚; ⁡𝜃 = 50°;⁡𝑉0 = 20.56⁡𝑚/𝑠; 𝑔⁡ = 9.81⁡𝑚/𝑠 2

Se obtienen los siguientes resultados:


𝑦 = 11.41⁡𝑚; ℎ = 30.10⁡𝑚

Programa 1.14: Código del programa.


/*******************************************************
JavaConsolaPrograma_1_14
*******************************************************/

// Paquete de la Lógica.
package PaqueteLogica;

// Librerías.
import java.util.Scanner;

// Clase del programa.


public class Programa {

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);

// Imprimir un mensaje de información y un salto de línea.


System.out.println("Tiro Parabólico en un Plano Inclinado.");
// Imprimir un salto de línea.
System.out.print("\n");

// Leer el valor de 'x' del plano inclinado.


System.out.print("Ingrese el valor de 'x' del plano inclinado: "); // Salida.
x = escaneo.nextFloat(); // Entrada.
// Leer el valor del ángulo 'theta' de lanzamiento.
System.out.print("Ingrese el valor del ángulo 'theta' de lanzamiento: ");
theta = escaneo.nextFloat(); // Entrada.
System.out.print("Ingrese el valor de la velocidad inicial de lanzamiento: ");
Vo = escaneo.nextFloat(); // Entrada.
// Imprimir un salto de línea.
System.out.print("\n");

// Convertir el valor del ángulo theta de grados a radianes.


theta = theta * (float)Math.PI / 180;
// Calcular el valor de 'y' del plano inclinado.
y = (x * (float)Math.tan(theta)) - (g * x * x) / (2 * Vo * Vo *
(float)Math.cos(theta) * (float)Math.cos(theta));
// Calcular el valor de 'h' del plano inclinado.
h = (float)Math.sqrt(x * x + y * y);

// Imprimir el valor de la variable 'y' y 'h' del plano inclinado.


System.out.println("El valor de 'y' es: " + y);
System.out.println("El valor de 'h' es: " + h + " grados.");
}
}

Salida 1.14: Salida del programa.

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.

1.10. Test de Conocimientos


1. ¿Cuál es el punto de entrada de un programa en el lenguaje Java?
a. El programa comienza con la primera línea de código.
b. El programa comienza con la primera directiva import.
c. El programa comienza con función principal ‘main’.
d. El programa comienza con el primer signo de llave ‘{’ abierta en alguna parte del
programa.

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.

3. El compilador traduce un archivo .java a un:


a. Archivo .class
b. Archivo .exe
c. Archivo .obj
d. Archivo .lib

4. ¿Cuál de las siguientes sentencias es verdadera?


a. Los comentarios son útiles para escribir notas y explicaciones dentro del código.
b. Los malos comentarios pueden ser peores que no tenerlos.
c. El compilador cuando compila el programa, se salta cualquier comentario y no
lo toma en cuenta.
d. Todas las opciones anteriores.

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.

6. El operador aritmético de módulo es __________, y el operador para concatenar


cadenas es __________.
a. MOD, @.
b. MOD, +.
c. %, +.
d. %, @.

7. ¿Cuál de los siguientes tipos de datos no corresponde a un tipo en C/C++?


a. float
b. integer
c. boolean
d. char

8. ¿Cuál de las siguientes opciones corresponde a un nombre correcto de una variable?


a. 17miNombre
b. $String!_GO
c. _valor_
d. int

9. ¿Cuál es el valor de la siguiente expresión?


int x = ((3 + 2) * 5) - (12 / ((-2) * (2 + 1))) - (3 * 7) + 7;
a. 4
b. 9
c. 11
d. 13

10. Dados los siguientes valores: A = Falso; B = Verdadero; C = Verdadero. Evalúe la


siguiente expresión lógica:
(!(6 == 10) || (2 <= 7)) && ((A || B) && C)
a. Verdadero
b. Falso
c. 6
d. 7

11. Dados los siguientes valores: A = Verdadero; B = Falso; C = Verdadero. Evalúe la


siguiente expresión lógica:
(12 != 20) || !(A && B || C)
a. Falso
b. Verdadero
c. 12
d. 20

12. Dado el siguiente fragmento de código:

int a = 7;
int b = 2;
int c;

c = a++ * b--;
a = 2 * b++;
b = 25 % a--;

System.out.println("a = " + 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);

¿Cuáles son los valores de las variables ‘a’, ‘b’ y ‘c’?


a. 2, 0, 8
b. 4, 1, 8
c. 1, 1, 14
d. 4, 1, 14

13. Dado el siguiente fragmento de código:

int a = 7;
int b = 2;
int c;

c = (14 / a++) * (3 * b--);


c = (3 * a++) * (3 + b++);
a = (2 * b++) * (4 * a++);
b = 25 % a--;

System.out.println("a = " + a);


System.out.println("b = " + b);
System.out.println("c = " + c);

¿Cuáles son los valores de las variables ‘a’, ‘b’ y ‘c’?


a. 140, 25, 96
b. 144, 25, 98
c. 142, 24, 98
d. 143, 25, 96

14. Dado el siguiente fragmento de código:

float x = 9;
float y;
float z;

y = (float)Math.sqrt(x) * 3 + (float)Math.pow(x, 2);


z = 27 / (float)Math.sqrt(x) + (2 * (float)Math.pow(x, 3) / 3);

System.out.println("x = " + x);


System.out.println("y = " + y);
System.out.println("z = " + z);

¿Cuáles son los valores de las variables ‘a’, ‘b’ y ‘c’?


a. 9, 96, 492
b. 9, 90, 495
c. 9, 96, 490
d. 9, 98, 492

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).

1.11. Problemas Propuestos


1. ¿Cuál es el valor de las siguientes expresiones?

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

2. Escribir un programa que imprima la letra A con asteriscos:

**********
* *
* *
* *
**********
* *
* *
* *
* *
* *

3. Escribir un programa que imprima un rectángulo con asteriscos:

************
* *
* *
* *
************

4. Escribir un programa que imprima la letra B con asteriscos:

**********
* *
* *
* *
**********
* *
* *
* *
* *
**********

5. Escribir un programa que imprima la letra C con asteriscos:

**********
*
*
*
*
*
*
*
*
**********

6. Escribir un programa que imprima un cuadrado con asteriscos:

****
* *
* *
****

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:

*
**
***
****
*****

8. Escribir las siguientes expresiones aritméticas como expresiones de computadora. Se


pueden utilizar las funciones matemáticas de la librería “cmath”:

(𝑎−𝑏)2
a. 𝑒 = (𝑎 + 𝑏 + 𝑐) (𝑐−𝑏)2
(𝑥+𝑦)
b. 𝑧 =
(𝑥−𝑦)2
c. 𝑘 = √𝑠 ∙ (𝑠 − 𝑎) ∙ (𝑠 − 𝑏) ∙ (𝑠 − 𝑐)
9
d. 𝑓 = 𝑐 ∙ 32
5
𝑐∙𝑒−𝑏∙𝑓
e. 𝑥 =
𝑎∙𝑒−𝑏∙𝑑
𝐺∙𝑚1 ∙𝑚2
f. 𝐹 =
𝑑2
g. ℎ = √𝑎2 + 𝑏 2
h. 𝑒 = 𝑚 ∙ 𝑐 2

9. Escribir un programa que permita representar la expresión algebraica:


(𝐴⁡&&⁡𝐵)⁡||⁡(! 𝐴⁡&&⁡! 𝐵) y probar una de las salidas de la puerta lógica XNOR, 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 el bicondicional (𝐴 ⟷ 𝐵), cuya tabla
de verdad es:

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

11. Escribir un programa que permita representar la expresión algebraica: ! (𝐴⁡&&⁡𝐵) y


probar una de las salidas de la puerta lógica NAND, 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 conjunción opuesta (𝐴 ↑ 𝐵), cuya tabla de verdad es:

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:

ℎ = √𝑎2 + 𝑏 2 (1) Hipotenusa del triángulo


𝑝 =𝑎+𝑏+ℎ (2) Perímetro del triángulo
𝑎∙𝑏 (3) Área del triángulo
á𝑟𝑒𝑎 =
2
17. Escribir un programa que solicite al usuario que ingrese el precio de un artículo y se
calcule el precio total incluido el impuesto del 12%. (Trabajar con valores flotantes).

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:

9 (1) Fórmula de conversión de grados Celsius a Fahrenheit


𝑓 = 𝑐 + 32
5

20. Escribir un programa para automatizar el cálculo de la aceleración radial, de la


aceleración total y el cálculo del ángulo Phi (𝜙), formado por las aceleraciones tangencial
y total, considerando el siguiente problema donde un automóvil muestra una aceleración
constante de 0.40⁡𝑚/𝑠 2 paralela a la autopista. El automóvil pasa sobre una elevación
en el camino tal que lo alto de la elevación tiene forma de círculo con 450⁡𝑚 de radio. En
el momento en que el automóvil está en lo alto de la elevación, su vector velocidad es
horizontal y tiene una magnitud de 7.00⁡𝑚/𝑠 (ver la Figura 1.11.3). ¿Cuáles son la
magnitud y dirección del vector aceleración total para el automóvil en ese instante?
Utilizar las siguientes fórmulas matemáticas. (Problema adaptado de Serway y Jewett,
2005; pp. 87; Ejemplo 4.7).

𝑣2 (1) Fórmula de la aceleración radial.


𝑎𝑟 = −
𝑟
𝑎 = √𝑎𝑟 2 + 𝑎𝑡 2 (2) Fórmula de la aceleración total.
𝑎𝑟 (3) Fórmula del ángulo Phi formado por la aceleración
𝜙 = arctan⁡ ( )
𝑎𝑡 radial y la tangencial.
𝑥[𝑟𝑎𝑑] ∙ 180 (4) Fórmula para convertir de radianes a grados.
𝑥=
𝜋

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).

Por ejemplo, con los siguientes datos:


𝑎𝑡 = 0.30⁡𝑚/𝑠 2 ; 𝑣 = 6.00⁡𝑚/𝑠; 𝑟 = 500⁡𝑚

Se obtienen los siguientes resultados:


𝑎𝑟 = −0.072⁡𝑚/𝑠 2 ; 𝑎 = 0.309⁡𝑚/𝑠 2 ; 𝜙 = −13.5°

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).

𝑚1 ∙ 𝑚2 (1) Fórmula para obtener la fuerza de atracción entre


𝐹𝑔 = 𝐺
𝑟2 dos masas.
𝐺 = 6.673 × 10 𝑁 ∙ 𝑚2 /𝐾𝑔2
−11 (2) Constante Gravitacional Universal

Por ejemplo, con los siguientes datos:


𝑚1 = 800⁡𝐾𝑔; 𝑚2 = 500⁡𝐾𝑔; 𝑑 = 3𝑚

Se obtienen los siguientes resultados:


𝐹 = 2.966 × 10−6 𝑁

22. Escribir un programa para automatizar la fórmula de Einstein, considerando que un


Kilogramo de Uranio reacciona en una bomba atómica trasformando 0.915⁡𝑔 de su masa
en energía. Como la masa viene dada en gramos se va a utilizar los ergios como unidad
de medida de la energía, donde 1⁡𝑒𝑟𝑔𝑖𝑜 es igual a 1𝑔 ∙ 𝑐𝑚2 /𝑠 2 . Además, se va a pasar
la velocidad de la luz a cm/s, por lo que queda 3 × 1010 𝑐𝑚/𝑠. Calcular el valor de la
energía producida por la transformación de una masa dada en gramos a energía dada
en ergios, utilizando la siguiente fórmula matemática. (Problema adaptado de Docsity,
s.f.; Problema 1).
𝑒 = 𝑚𝑐 2 (1) Fórmula de Einstein.

Por ejemplo, con los siguientes datos:


𝑚 = 0.915⁡𝑔; 𝑐 = 3 × 1010 𝑐𝑚/𝑠

Se obtienen los siguientes resultados:


𝑒 = 8.235 × 1020 𝑒𝑟𝑔𝑖𝑜𝑠

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

También podría gustarte