Está en la página 1de 54

CURSO DE PROGRAMACIÓN FULL STACK

INTRODUCCION A
JAVA
FUNDAMENTOS DEL LENGUAJE
Objetivos de la Guía

En esta guía aprenderemos a:

• Utilizar el nuevo IDE.

• Definir y operar variables.

• Definir y utilizar estructuras de control.

• Utilizar comandos de lectura y escritura para mostrar


mensajes por pantalla y recibir información desde la
consola de ejecución.

• Definición y utilización de funciones, manejo de


retornos.

• Definición, llenado y muestra de vectores y matrices.

• Uso de métodos predefinidos por el IDE.

PINTRODUCCIÓN A JAVAP
Hasta el momento hemos aprendido los diferentes tipos de estructuras de control comunes a
todos los lenguajes de programación, dentro del paradigma de programación imperativa,
haciendo uso del pseudo intérprete PSeInt. A partir de esta guía comenzaremos a introducir cada
uno de los conceptos vistos hasta el momento, pero haciendo uso de un lenguaje de
programación de propósito general como lo es Java.

JAVA
Java es un tipo de lenguaje de programación y una plataforma informática, creada y
comercializada por Sun Microsystems en el año 1995 y desde entonces se ha vuelto muy popular,
gracias a su fácil portabilidad a todos los sistemas operativos existentes.

Java es un lenguaje de programación de alto nivel, estos, permiten escribir código mediante
idiomas que conocemos (ingles, español, etc.) y luego, para ser ejecutados, se traduce al
lenguaje de máquina mediante traductores o compiladores. Java es un lenguaje de alto nivel
donde sus palabras reservadas están en ingles.

ESTRUCTURA DE UN PROGRAMA JAVA


Vamos a crear un programa desde cero. Estos pasos los repetirás cada vez que realices un nuevo
ejercicio, de esta manera tendrás todos tus proyectos ordenados y podrás recurrir a ellos
fácilmente cuando lo necesites.

1
Primero deberemos ir a File -> New Project

O podemos hacer click en la siguiente opción:

2
Ahora deberemos elegir el tipo de proyecto que queremos crear, vamos a elegir un proyecto de
Java

Por último deberemos ponerle un nombre a nuestro proyecto

Aquí
colocamos el
nombre del
proyecto de la
siguiente
manera:
nombreGuiaEj
01

Nos quedaría así:

3
P¿CÓMO SE VE UN PROGRAMA EN JAVA?P
Un programa describe como un ordenador debe interpretar las ordenes del programador para
que ejecute y realice las instrucciones dadas tal como están escritas. Un programador utiliza los
elementos que ofrece un lenguaje de programación para diseñar programas que resuelvan
problemas concretos o realicen acciones bien definidas.

El siguiente programa Java muestra un mensaje en la consola con el texto “Hola Mundo”.

En este programa se pueden identificar los siguientes elementos del lenguaje Java: comentarios,
paquete, definiciones de clase, definiciones de método y sentencias. Veamos qué es y qué hace
cada uno:

¿CUÁLES SON LOS COMENTARIOS?


El texto del primer comentario de este ejemplo seria: ‘Este programa escribe el texto “Hola
Mundo” en la consola utilizando el método System.out.println()'.

El segundo comentario es // La línea 12 muestra el mensaje por pantalla al ejecutar el programa

Los comentarios son ignorados por el compilador y solo son útiles para el programador. Los
comentarios ayudan a explicar aspectos relevantes de un programa y lo hacen más legible. En un
comentario se puede escribir todo lo que se desee, el texto puede ser de una o más líneas.

4
Cuando programes en Java, encontrarás que es muy útil agregar
comentarios en tu código. Explicando qué hace cada línea o cada
bloque.

El delimitador de inicio de un comentario es /* y el delimitador de fin


de comentario es */.

Si el comentario es breve puedes usar // al inicio del comentario

¿CUÁL ES EL PAQUETE?
Después del comentario viene está escrito el nombre del paquete. Los paquetes son
contenedores de clases y su función es la de organizar la distribución de las clases. Los paquetes
y las clases son análogos a las carpetas y archivos utilizadas por el sistema operativo,
respectivamente. Esto quiere decir, cada paquete es una carpeta que contiene archivos, que son
las clases.

El lenguaje de programación de la tecnología Java le provee la sentencia package como la forma


de agrupar clases relacionadas. La sentencia package tiene la siguiente forma:

package <nombre_paq_sup>[.<nombre_sub_paq>]*;

La declaración package, en caso de existir, debe estar al principio del archivo fuente y sólo la
declaración de un paquete está permitida. Los nombres de los paquetes los pondrá el
programador al crear el programa y son jerárquicos (al igual que una organización de directorios
en disco) además, están separados por puntos. Es usual que sean escritos completamente en
minúscula.

¿CUÁL ES LA CLASE?
La primera línea del programa, después del package. Define una clase que se llama HolaMundo.
En el mundo de orientación a objetos, todos los programas se definen en término de objetos y
sus relaciones. Las clases sirven para modelar los objetos que serán utilizados por nuestros
programas. Los objetos, las clases y los paquetes son conceptos que serán abordados con
profundidad más adelante en el curso.

Una clase está formada por una parte correspondiente a la declaración de la clase, y otra
correspondiente al cuerpo de la misma:

5
Declaración de clase {

Cuerpo de clase

En la plantilla de ejemplo se ha simplificado el aspecto de la Declaración de clase, pero sí que


puede asegurarse que la misma contendrá, como mínimo, la palabra reservada class y el nombre
que recibe la clase. La definición de la clase o cuerpo de las comienza con una llave abierta ({) y
termina con una llave cerrada (}). El nombre de la clase lo define el programador.

¿CUÁL ES EL MÉTODO?
Después de la definición de clase se escribe la definición del método main(). Pero que es un
método?. Dentro del cuerpo de la clase se declaran los atributos y los métodos de la clase. Un
método es una secuencia de sentencias ejecutables. Las sentencias de un método quedan
delimitadas por los caracteres { y } que indican el inicio y el fin del método, respectivamente. Si
bien es un tema sobre el que se profundizará más adelante en el curso, los métodos son de vital
importancia para los objetos y las clases. En un principio, para dar los primeros pasos en Java
nos alcanza con esta definición.

Método main()

Ahora sabemos lo que es un método, pero en el ejemplo podemos ver el método main(). El
main() sirve para que un programa se pueda ejecutar, este método, vendría a representar el
Algoritmo / FinAlgoritmo de PseInt y tiene la siguiente declaración:

public static void main(String[] args){

A continuación, describirnos cada uno de los modificadores y componentes que se utilizan


siempre en la declaración del método main():

6
public: es un tipo de acceso que indica que el método main() es público y, por tanto, puede ser
llamado desde otras clases. Todo método main() debe ser público para poder ejecutarse desde el
intérprete Java (JVM).

static: es un modificador el cual indica que la clase no necesita ser instanciada para poder
utilizar el método. También indica que el método es el mismo para todas las instancias que
pudieran crearse.

void: indica que la función o método main() no devuelve ningún valor.

El método main() debe aceptar siempre, como parámetro, un vector de strings, que contendrá
los posibles argumentos que se le pasen al programa en la línea de comandos, aunque como es
nuestro caso, no se utilice.

Luego, al indicarle a la máquina virtual que ejecute una aplicación el primer método que
ejecutará es el método main(). Si indicamos a la máquina virtual que corra una clase que no
contiene este método, se lanzará un mensaje advirtiendo que la clase que se quiere ejecutar no
contiene un método main(), es decir que dicha clase no es ejecutable.

Si no se han comprendido hasta el momento muy bien todos estos conceptos, los
mismos se irán comprendiendo a lo largo del curso.

SENTENCIA
Son las unidades ejecutables más pequeña de un programa, en otras palabras, una línea de
código escrita es una sentencia. Especifican y controlan el flujo y orden de ejecución del
programa. Una sentencia consta de palabras clave o reservadas como expresiones, declaraciones
de variables, o llamadas a funciones.

En nuestro ejemplo, del método main() se incluye una sentencia para mostrar un texto por la
consola. Los textos siempre se escriben entre comillas dobles para diferenciarlos de otros
elementos del lenguaje. Todas las sentencias de un programa Java deben terminar con
el símbolo punto y coma. Este símbolo indica al compilador que ha finalizado una sentencia.

Una vez que el programa se ha editado, es necesario compilarlo y ejecutarlo para comprobar si
es correcto. Al finalizar el proceso de compilación, el compilador indica si hay errores en el código
Java, donde se encuentran y el tipo de error que ha detectado: léxico, sintáctico o semántico.

Puede que tantos conceptos nuevos, instalar e utilizar un nuevo


IDE nos haga sentir un poco confundidos. Habla con tu equipo,
charlen de lo leído hasta aquí e intercambien opiniones.

7
Intenten recordar cómo se veía esto en PseInt y analicen las
diferencias.

Revisemos lo aprendido hasta aquí

• Escribir comentarios en java

• Diferenciar el paquete, la clase y el método


main.

• Comprender dónde deben escribirse las


sentencias

¿CUÁLES SON LOS ELEMENTOS DE UN PROGRAMA?


Los conceptos vistos previamente, son la estructura de un programa, pero también existen los
elementos de un programa. Estos son, básicamente, los componentes que van a conformar las
sentencias que podamos escribir en nuestro programa. Recordemos que toda sentencia en
nuestro programa debe terminar con el símbolo punto y coma Nos van a ayudar para crear
nuestro programa y resolver sus problemas. Estos elementos siempre estarán dentro de un
programa/algoritmo.

Los elementos de un programa son: identificadores, variables, constantes, operadores,


palabras reservadas.

¿QUÉ SON LAS PALABRAS RESERVADAS?


Palabras que dentro del lenguaje significan la ejecución de una instrucción determinada, por lo
que no pueden ser utilizadas con otro fin. En Java, al ser un lenguaje que está creado en ingles,
todas nuestras palabras reservadas van a estar en ese idioma.

¿QUÉ SON LOS IDENTIFICADORES?


Los identificadores son los nombres que se usan para identificar cada uno de los elementos del
lenguaje, como ser, los nombres de las variables, nombres de las clases, interfaces, atributos y
métodos de un programa. Si bien Java permite nombres de identificadores tan largos que se
desee, es aconsejable crearlos de forma que tengan sentido y faciliten su interpretación. El
nombre ideal para un identificador es aquel que no se excede en longitud (lo más corto posible)

8
y que califique claramente el concepto que intenta representar en el contexto del problema que
se está resolviendo.

¿Recuerdas cómo utilizar correctamente el CamelCase?

Para identificar correctamente a las variables, clases, atributos, etc al


nombrarlas hazte la siguiente pregunta ¿Refleja este nombre la
información que aloja o la función que cumple?

VARIABLES Y CONSTANTES
Recordemos que en Pseint dijimos que los programas de computadora necesitan información
para la resolución de problemas. Está información puede ser un numero, un nombre, etc. Para
utilizar la información, vamos a guardarla en algo llamado, variables y constantes. Las
variables y constantes vendrían a ser como pequeñas cajas, que guardan algo en su interior, en
este caso información. Estas, van a contar como previamente habíamos mencionado, con un
identificador, un nombre que facilitara distinguir unas de otras y nos ayudara a saber que
variable o constante es la contiene la información que necesitamos.

Dentro de toda la información que vamos a manejar, a veces, necesitaremos información que no
cambie. Tales valores son las constantes. De igual forma, existen otros valores que
necesitaremos que cambien durante la ejecución del programa; esas van a ser nuestras
variables.

Declaración de variables en Java

Normalmente los identificadores de las variables y de las constantes con nombre deben ser
declaradas en los programas antes de ser utilizadas. La sintaxis de la declaración de una variable
en java suele ser:

<tipo_de_dato> <nombre_variable>;

PTIPOS DE DATO EN JAVAP


Java es un lenguaje de tipado estático, esto significa que todas las variables deben ser
declaradas antes que ellas puedan ser utilizadas y que no podemos cambiar el tipo de dato de
una variable, a menos que, sea a traves de una conversión.

9
TIPOS DE DATOS PRIMITIVOS
Primitivos: Son predefinidos por el lenguaje. La biblioteca Java proporciona clases asociadas a
estos tipos que proporcionan métodos que facilitan su manejo.

byte Es un entero con signo de 8 bits, el mínimo valor que se puede almacenar es -128
y el máximo valor es de 127 (inclusive).

short Es un entero con signo de 16 bits. El valor mínimo es -32,768 y el valor máximo
32,767 (inclusive).

int Es un entero con signo de 32 bits. El valor mínimo es -2,147,483,648 y el valor


máximo es 2,147,483,64 (inclusive). Generalmente es la opción por defecto.

long Es un entero con signo de 64 bits, el valor mínimo que puede almacenar este tipo
de dato es -9,223,372,036,854,775,808 y el máximo valor es
9,223,372,036,854,775,807 (inclusive).

float Es un número decimal de precisión simple de 32 bits (IEEE 754 Punto Flotante).

double Es un número decimal de precisión doble de 64 bits (IEEE 754 Punto Flotante).

boolean Este tipo de dato sólo soporta dos posibles valores: verdadero o falso y el dato es
representado con tan solo un bit de información.

El tipo de dato carácter es un simple carácter unicode de 16 bits. Su valor mínimo


es de '\u0000' (En entero es 0) y su valor máximo es de '\uffff' (En entero es
char
65,535). Nota: un dato de tipo carácter se puede escribir entre comillas simples,
por ejemplo 'a', o también indicando su valor Unicode, por ejemplo '\u0061'.

String Además de los tipos de datos primitivos el lenguaje de programación Java provee
también un soporte especial para cadena de caracteres a través de la clase String.

Encerrando la cadena de caracteres con comillas dobles se creará de manera


automática una nueva instancia de un objeto tipo String.

String cadena = “Sebastián”;

Los objetos String son inmutables, esto significa que una vez creados, sus valores
no pueden ser cambiados. Si bien esta clase no es técnicamente un tipo de dato
primitivo, el lenguaje le da un soporte especial y hace parecer como si lo fuera.

10
¿Como se ve en Java?

EJERCICIO 1
Crear un proyecto de Java y definir al menos 6 variables en tu IDE de distintos tipos de datos.

DETECCIÓN DE ERRORES
¿Puedes corregir las siguientes declaraciones de variables?

public static void main(String[] args) {


string nombre
bolean bandera
char char;
}
}

¿Ya viste lo importante que es el ; (punto y coma) después de cada


sentencia?

Revisemos lo aprendido hasta aquí

• Definir variables de todos los tipos primitivos.

• Nombrar correctamente a las variables.

11
PINSTRUCCIONES PRIMITIVASP
Dentro de las instrucciones previamente vistas, existe una subdivisión que son las instrucciones
primitivas, las instrucciones primitivas van a ser las instrucciones de asignación, lectura y
escritura.

ASIGNACIÓN
La instrucción de asignación permite almacenar un valor en una variable (previamente definida).
Esta es nuestra manera de guardar información en una variable, para utilizar ese valor en otro
momento.

<variable> = <expresión>
En Java, podemos definir una variable y al mismo tiempo podemos asignarle un valor a diferencia
de Pseint:

<tipo_de_dato> <nombre_variable> = expresion;


Al ejecutarse la asignación, primero se evalúa la expresión de la derecha y luego se asigna el
resultado a la variable de la izquierda. El tipo de la variable y el de la expresión deben coincidir.

VALORES POR DEFECTO


En Java no siempre es necesario asignar valores cuando nuevos atributos son declarados.
Cuando los atributos son declarados, pero no inicializados, el compilador les asignará un valor
por defecto. A grandes rasgos el valor por defecto será cero o null dependiendo del tipo de dato.
La siguiente tabla resume los valores por defecto dependiendo del tipo de dato.

byte 0

short 0

int 0

long 0

float 0.0

double 0.0

boolean False

12
char '\u0000'

String Null

Objetos Null

Las variables locales son ligeramente diferentes; el compilador no asigna un valor


predeterminado a una variable local no inicializada. Las variables locales son aquellas que se
declaran dentro de un método. Si una variable local no se inicializa al momento de declararla, se
debe asignar un valor antes de intentar usarla. El acceso a una variable local no inicializada dará
lugar a un error en tiempo de compilación.

EJERCICIO 2
¿Recuerdas las variables que creaste en el ejercicio anterior? Ahora deberás asignarles un valor.

DETECCIÓN DE ERRORES
public static void main(String[] args) {
int numero = "48";
double decimales = 3,55;
bolean bandera -> "false";
}

Revisemos lo aprendido hasta aquí

• Asignarles valores a las variables de acuerdo con


su tipo.

POPERADORESP

13
Los operadores son símbolos especiales de la plataforma que permiten especificar operaciones en
uno, dos o tres operandos y retornar un resultado. También aprenderemos qué operadores
poseen mayor orden de precedencia. Los operadores con mayor orden de precedencia se
evalúan siempre primero.

Primeramente, proceden los operadores unarios, luego los aritméticos, después los de bits,
posteriormente los relacionales, detrás vienen los booleanos y por último el operador de
asignación. La regla de precedencia establece que los operadores de mayor nivel se ejecuten
primero. Cuando dos operadores poseen el mismo nivel de prioridad los mismos se evalúan de
izquierda a derecha.

Operadores Aritméticos

+ Operador de Suma

- Operador de Resta

* Operador de Multiplicación

/ Operador de División

% Operador de Módulo

Operadores Unarios

+ Operador Unario de Suma; indica que el valor es positivo.

- Operador Unario de Resta; indica que el valor es negativo.

++ Operador de Incremento.

-- Operador de Decremento.

Operadores de Igualdad y Relación

== Igual

!= Distinto

> Mayor que

14
>= Mayor o igual que

< Menor que

<= Menor o igual que

¿Como se ve en Java?

EJERCICIO 3
Define variables donde puedas alojar los resultados y prueba usar dos operadores de cada tipo.

Puede que tantos conceptos nuevos, instalar e utilizar un nuevo


IDE nos haga sentir un poco confundidos. Habla con tu equipo,
charlen de lo leído hasta aquí e intercambien opiniones.
Intenten recordar cómo se veía esto en PseInt y analicen las
diferencias.

Revisemos lo aprendido hasta aquí

15
• Operar con las variables

• Comprender las operaciones de acuerdo con los


tipos de variables.

PTIPOS DE INSTRUCCIONESP
Además de los elementos de un programa/algoritmo, tenemos las instrucciones que pueden
componer un programa. Las instrucciones —acciones— básicas que se pueden implementar de
modo general en un algoritmo y que esencialmente soportan todos los lenguajes son las
siguientes:

Instrucciones de inicio/fin, son utilizadas para delimitar bloques de código.


Instrucciones de asignación, se utilizan para asignar el resultado de la evaluación de
una expresión a una variable. El valor (dato) que se obtiene al evaluar la expresión es
almacenado en la variable que se indique.
Instrucciones de lectura, se utilizan para leer datos de un dispositivo de entrada y se
asignan a las variables.
Instrucciones de escritura, se utilizan para escribir o mostrar mensajes o contenidos
de las variables en un dispositivo de salida.
Instrucciones de bifurcación, mediante estas instrucciones el desarrollo lineal de un
programa se interrumpe. Las bifurcaciones o al flujo de un programa puede ser según el
punto del programa en el que se ejecuta la instrucción hacia adelante o hacia atrás.

ENTRADA Y SALIDA DE INFORMACIÓN


Los cálculos que realizan las computadoras requieren, para ser útiles la entrada de los datos
necesarios para ejecutar las operaciones que posteriormente se convertirán en resultados, es
decir, salida.

Las operaciones de entrada permiten leer determinados valores y asignarlos a determinadas


variables y las operaciones de salida permiten escribir o mostrar resultados de determinadas
variables y las operaciones, o simplemente mostrar mensajes.

ESCRITURA EN JAVA
En nuestro ejemplo de código al principio de la guía, usábamos la instrucción
System.out.println() para mostrar el mensaje Hola Mundo. Esta instrucción permite mostrar

16
valores en el Output, que es la interfaz grafica de Java. Todo lo que quisiéramos mostrar en
nuestra interfaz grafica, deberá ir entre comillas dobles y dentro del paréntesis.

System.out.println(“Hola Mundo”);
Si quisiéramos que concatenar un mensaje y la impresión de una variable deberíamos usar el
símbolo más para poder lograrlo.

System.out.println(“La variable tiene el valor de: ” + variable);


Si quisiéramos escribir sin saltos de línea, deberíamos quitarle el ln a nuestro System.out.println.

System.out.print("Hola");
System.out.print(“Mundo”);

EJERCICIO 4
Define una variable que aloje tu nombre y otra que guarde tu edad. Imprime ambas variables
por pantalla.

Recomendamos que hagan el siguiente experimento: tipear en


minúsculas la palabra sout y apenas terminamos de escribirla tocar el
botón tab o mejor dicho tabular.

Esto nos va a generar un System.out.println() para poder escribir lo


que queramos.

17
Revisemos lo aprendido hasta aquí

• Poder mostrar mensajes por pantalla

• Mostrar el valor alojado en las variables por


pantalla

PLECTURA O ENTRADA EN JAVAP


En Java hay muchas maneras de ingresar información en el Output por teclado en nuestro
programa Java, en el curso vamos a usar la clase Scanner.

Scanner es una clase en el paquete java.util utilizada para obtener la entrada de los tipos
primitivos como int, double etc. y también String. Es la forma más fácil de leer datos en un
programa Java.

Ejemplo definición clase Scanner:

• Este objeto Scanner vamos a tener que importarlo para poder usarlo, ya que es una
herramienta que nos provee Java. Para importarlo vamos a utilizar la palabra clave
import, seguido de la declaración de la librería donde se encuentra el Scanner. Esta
sentencia, va debajo de la sentencia package. La sentencia se ve así: import
java.util.Scanner;

• Para crear un objeto de clase Scanner, normalmente pasamos el objeto


predefinido System.in, que representa el flujo de entrada estándar.

• Se le puso el nombre leer, pero se le puede el nombre que nosotros quisiéramos.

• Para utilizar las funciones del objeto Scanner, vamos a utilizar el nombre que le hemos
asignado y después del nombre ponemos un punto(.), de esa manera podremos llamar a
las funciones del Scanner.

• Para leer valores numéricos de un determinado tipo de datos, la función que se utilizará
es nextT(). Por ejemplo, para leer un valor de tipo int (entero), podemos usar nextInt(),

18
para leer un valor de tipo double(real), usamos nextDouble() y etc. Para leer un
String (cadenas), usamos nextLine().

Podemos usarlo cuando definimos la variable:

int numero = leer.nextInt();

Podemos usarlo con una variable pre definida:

int numero;

numero = leer.nextInt();

Pueden encontrar un ejemplo lectura y entrada en Java en tu Aula


Virtual.

¿Ya viste que al utilizar ‘leer.’ NetBeans otorga una lista de


sugerencias? Debes seleccionar en esas sugerencias, el tipo de dato
que quieres leer, que coincidirá con el tipo de variable donde alojarás
esa información.

EJERCICIO 5

19
Define una variable de tipo boolean, double y char. Guarda información en ellas a través del
Scanner.

DETECCIÓN DE ERRORES
Arreglar la siguiente porción de codigo.

public static void main(String[] args) {


Scanner leer = new Scanner();
System.out.println("Ingresa tu edad");
String nombre = leer.nextInt();

System.out.println("Ingresa tu nombre");
int edad = leer.next();
}
}

Revisemos lo aprendido hasta aquí

• Alojar valores en las variables ingresados por


consola

• Importar el paquete Java.Util para acceder al


método Scanner.

• Distinguir qué opción debe usarse dentro de las


funciones sugeridas del ‘leer’ según el tipo de
dato a almacenar.

PINSTRUCCIONES DE BIFURCACIÓNP
Mediante estas instrucciones el desarrollo lineal de un programa se interrumpe. Las bifurcaciones
o al flujo de un programa puede ser según el punto del programa en el que se ejecuta la
instrucción hacia adelante o hacia atrás. De esto se encargan las estructuras de control.

Para esto también vamos a usar los operadores lógicos o condicionales, estos son los mismos
que en PseInt pero se escriben de distintas formas:

Operadores Condicionales

20
&& AND

|| OR

! Operador Lógico de Negación.

ESTRUCTURAS DE CONTROL
Las estructuras de control son construcciones hechas a partir de palabras reservadas del lenguaje
que permiten modificar el flujo de ejecución de un programa. De este modo, pueden crearse
construcciones de alternativas mediante sentencias condicionales y bucles de repetición de
bloques de instrucciones. Hay que señalar que un bloque de instrucciones se encontrará
encerrado mediante llaves {……..} si existe más de una instrucción.

ESTRUCTURAS CONDICIONALES
Los condicionales son estructuras de control que cambian el flujo de ejecución de un programa
de acuerdo con si se cumple o no una condición. Cuando el flujo de control del programa llega al
condicional, el programa evalúa la condición y determina el camino a seguir. Existen dos tipos de
estructuras condicionales, las estructuras if / else y la estructura switch.

La teoría y el funcionamiento es IGUAL que en PseInt. ¿Qué


aprenderemos ahora? A “escribir” estas estructuras en Lenguaje Java.

IF/ELSE
La estructura if es la más básica de las estructuras de control de flujo. Esta estructura le indica al
programa que ejecute cierta parte del código sólo si la condición evaluada es verdadera («true»).
La forma más simple de esta estructura es la siguiente:

if(<condición>){
<sentencias>
}

En donde, <condición> es una expresión condicional cuyo resultado luego de la evaluación es un


dato booleano(lógico) verdadero o falso. El bloque de instrucciones <sentencias> se ejecuta si, y
sólo si, la expresión (que debe ser lógica) se evalúa a true, es decir, se cumple la condición.

Luego, en caso de que la condición no se cumpla y se quiera ejecutar otro bloque de código, otra
forma de expresar esta estructura es la siguiente:

if(<condición>){

21
<sentencias A>
} else {
<sentencias B>
}

El flujo de control del programa funciona de la misma manera, cuando se ejecuta la estructura if,
se evalúa la expresión condicional, si el resultado de la condición es verdadero se ejecutan las
sentencias que se encuentran contenidas dentro del bloque de código if (<sentencias A>).
Contrariamente, se ejecutan las sentencias contenidas dentro del bloque else (<sentencias B>).

En muchas ocasiones, se anidan estructuras alternativas if-else, de forma que se pregunte por
una condición si anteriormente no se ha cumplido otra y así sucesivamente.

if (<condicion1>) {
<sentencias A>
} else if(<condicion2>){
<sentencias B>
} else {
<sentencias C>
}

EJERCICIO 6
Implementar un programa que le pida dos números enteros a usuario y determine si ambos o
alguno de ellos es mayor a 25.

22
Revisemos lo aprendido hasta aquí

• Utilizar una estructura if / if else

• Distinguir en qué casos debo utilizarla

SWITCH
El bloque switch evalúa qué valor tiene la variable, y de acuerdo con el valor que posee ejecuta
las sentencias del bloque case correspondiente, es decir, del bloque case que cumpla con el valor
de la variable que se está evaluando dentro del switch.

switch(<variable>) {
case <valor1>:
<sentencias1>
break;
case <valor2>:
<sentencias2>
break;
default:
<sentencias3>
}
El uso de la sentencia break que va detrás de cada case termina la sentencia switch que la
envuelve, es decir que el control de flujo del programa continúa con la primera sentencia que se
encuentra a continuación del cierre del bloque switch. Si el programa comprueba que se cumple
el primer valor (valor1) se ejecutará el bloque de instrucciones <sentencias1>, pero si no se
encuentra inmediatamente la sentencia break también se ejecutarían las instrucciones
<sentencias2>, y así sucesivamente hasta encontrarse con la palabra reservada break o llegar al
final de la estructura.

Las instrucciones dentro del bloque default se ejecutan cuando la variable que se está evaluando
no coincide con ninguno de los valores case. Esta sentencia equivale al else de la estructura if-
else.

23
EJERCICIO 7
Considera que estás desarrollando una web para una empresa que fabrica motores (suponemos
que se trata del tipo de motor de una bomba para mover fluidos). Definir una variable tipoMotor
y permitir que el usuario ingrese un valor entre 1 y 4. El programa debe mostrar lo siguiente:

o Si el tipo de motor es 1, mostrar un mensaje indicando “La bomba es una bomba de


agua”.

o Si el tipo de motor es 2, mostrar un mensaje indicando “La bomba es una bomba de


gasolina”.

o Si el tipo de motor es 3, mostrar un mensaje indicando “La bomba es una bomba de


hormigón”.

o Si el tipo de motor es 4, mostrar un mensaje indicando “La bomba es una bomba de


pasta alimenticia”.

o Si no se cumple ninguno de los valores anteriores mostrar el mensaje “No existe un valor
válido para tipo de bomba”

Pueden encontrar un ejemplo de estructuras condicionales en Java en


tu Aula Virtual.

24
Revisemos lo aprendido hasta aquí

o Utilizar una estructura switch

o Distinguir cuando debo utilizarla

o Utilizar correctamente la opcion ‘default’

PESTRUCTURAS REPETITIVASP
Durante el proceso de creación de programas, es muy común, encontrarse con que una
operación o conjunto de operaciones deben repetirse muchas veces. Para ello es importante
conocer las estructuras de algoritmos que permiten repetir una o varias acciones, un número
determinado de veces.

Las estructuras que repiten una secuencia de instrucciones un número determinado de veces se
denominan bucles, y se denomina iteración al hecho de repetir la ejecución de una secuencia de
acciones.

Todo bucle tiene que llevar asociada una condición, que es la que va a determinar cuándo se
repite el bucle y cuando deja de repetirse.

SENTENCIAS DE SALTO
En Java existen dos formas de realizar un salto incondicional en el flujo “normal” de un
programa. A saber, las instrucciones break y continue.

BREAK
La instrucción break sirve para abandonar una estructura de control, tanto de las condicionales
(if-else y switch) como de las repetitivas (for, do-while y while). En el momento que se ejecuta la
instrucción break, el control del programa sale de la estructura en la que se encuentra contenida
y continua con el programa.

CONTINUE
La sentencia continue corta la iteración en donde se encuentra el continue, pero en lugar de salir
del bucle, continúa con la siguiente iteración. La instrucción continue transfiere el control del
programa desde la instrucción continue directamente a la cabecera del bucle (for, do-while o
while) donde se encuentra.

Pueden encontrar un ejemplo de sentencias de salto en Java en tu Aula


Virtual.

25
WHILE
La estructura while ejecuta un bloque de instrucciones mientras se cumple una condición. La
condición se comprueba antes de empezar a ejecutar por primera vez el bucle, por lo tanto, si la
condición se evalúa a «false» en la primera iteración, entonces el bloque de instrucciones no se
ejecutará ninguna vez.

while (<condición>) {
<sentencias>
}

EJERCICIO 8
Escriba un programa que valide si una nota está entre 0 y 10, sino está entre 0 y 10 la nota se
pedirá de nuevo hasta que la nota sea correcta.

Revisemos lo aprendido hasta aquí

26
• Utilizar una estructura WHILE

• Distinguir cómo se ejecutarán los comandos y


cuándo se verifica la condición

• Comprender cuándo debo usar una estructura


WHILE

DO / WHILE
En este tipo de bucle, el bloque instrucciones se ejecuta siempre al menos una vez. El bloque de
instrucciones se ejecutará mientras la condición se evalúe a «true». Por lo tanto, entre las
instrucciones que se repiten deberá existir alguna que, en algún momento, haga que la condición
se evalúe a «false», de lo contrario el bucle será infinito.

do {
<sentencias>
} while (<condición>);

Compara este ejemplo con el dado en la estructura WHILE. ¿Qué


diferencias encuentras además de la estructura?

27
EJERCICIO 9
Escriba un programa que lea 20 números. Si el número leído es igual a cero se debe salir del
bucle y mostrar el mensaje "Se capturó el numero cero". El programa deberá calcular y mostrar
el resultado de la suma de los números leídos, pero si el número es negativo no debe sumarse.
Nota: recordar el uso de la sentencia break.

La diferencia entre do-while y while es que do-while evalúa su


condición al final del bloque en lugar de hacerlo al inicio. Por lo tanto,
el bloque de sentencia después del “do” siempre se ejecutan al menos
una vez.

Revisemos lo aprendido hasta aquí

• Utilizar una estructura DO / WHILE

• Distinguir cómo se ejecutarán los comandos y


cuándo se verifica la condición

• Comprender cuándo debo usar una estructura


DO /WHILE

• Diferenciar una estructura WHILE de una DO /


WHILE

FOR
La estructura for proporciona una forma compacta de recorrer un rango de valores cuando la
cantidad de veces que se deber iterar un bloque de código es conocida. La forma general de la
estructura for se puede expresar del siguiente modo:

for (<inicialización>; <terminación>; <incremento>) {


<sentencias>
}

La expresión <inicialización> inicializa el bucle y se ejecuta una sola vez al iniciar el bucle. El
bucle termina cuando al evaluar la expresión <terminación> el resultado que se obtiene es false.
La expresión <incremento> se invoca después de cada iteración que realiza el bucle; esta
expresión incrementa o decrementa un valor hasta que se cumpla la condición de <terminación>
del bucle.

28
Como regla general puede decirse que se utilizará el bucle for cuando se conozca de antemano el
número exacto de veces que ha de repetirse un determinado bloque de instrucciones. Se utilizará
el bucle do-while cuando no se conoce exactamente el número de veces que se ejecutará el
bucle, pero se sabe que por lo menos se ha de ejecutar una. Se utilizará el bucle while cuando es
posible que no deba ejecutarse ninguna vez.

Resultado:

Recuerdas el atajo del sout, vamos a probar lo mismo con el bucle for.
Al escribir for y tabular nos va a generar automáticamente un bucle for.

Además, pueden encontrar un ejemplo de estructuras repetitivas en tu


Aula Virtual.

29
EJERCICIO 10
Realizar un programa que lea 4 números (comprendidos entre 1 y 20) e imprima el número
ingresado seguido de tantos asteriscos como indique su valor. Por ejemplo:

5 *****
3 ***
11 ***********
2 **

Revisemos lo aprendido hasta aquí

• Utilizar una estructura for

• Distinguir el inicio, la terminación y el


incremento.

• Comprender cómo itera el valor de i

• Implementar for anidados

PSUBPROGRAMASP
Un método muy útil para solucionar un problema complejo es dividirlo en subproblemas —
problemas más sencillos— y a continuación dividir estos subproblemas en otros más simples,
hasta que los problemas más pequeños sean fáciles de resolver. Esta técnica de dividir el
problema principal en subproblemas se suele denominar “divide y vencerás”.

El problema principal se soluciona por el correspondiente programa o algoritmo principal,


mientras que la solución de los subproblemas será a través de subprogramas, conocidos como
procedimientos o funciones. Un subprograma es un como un mini algoritmo, que recibe los
datos, necesarios para realizar una tarea, desde el programa y devuelve los resultados de esa
tarea.

FUNCIONES
Las funciones o métodos son un conjunto de líneas de código (instrucciones), encapsulados en
un bloque, usualmente según los parámetros definidos en la función, esta recibe argumentos,

30
cuyos valores se utilizan para efectuar operaciones y adicionalmente retornan un valor. En otras
palabras, una función según sus parámetros puede recibir argumentos (algunas no reciben
nada), hace uso de dichos valores recibidos como sea necesario y retorna un valor usando la
instrucción return, si no retorna es otro tipo de función. Los tipos que pueden usarse en la
función son: int, doble, long, boolean, String y char.

A estas funciones les vamos a asignar un tipo de acceso y un modificador. Estos dos conceptos
los vamos a ver mejor más adelante, pero por ahora siempre vamos a crear las funciones con el
acceso public y el modificador static. Para saber más sobre estos dos temas, leer la
explicación del método main.

[acceso][modificador][tipo] nombreFuncion([tipo] nombreArgumento, …….){


/*
* Bloque de instrucciones
*/
return valor;
}

Consejos acerca de return:

• Cualquier instrucción que se encuentre después de la ejecución de return NO será


ejecutada. Es común encontrar funciones con múltiples sentencias return al interior de
condicionales, pero una vez que el código ejecuta una sentencia return lo que haya de allí
hacia abajo no se ejecutará.

• El tipo de valor que se retorna en una función debe coincidir con el del tipo declarado a la
función, es decir si se declara int, el valor retornado debe ser un número entero.

31
EJERCICIO 11
Escribir un programa que procese una secuencia de caracteres ingresada por teclado y terminada
en punto, y luego codifique la palabra o frase ingresada de la siguiente manera: cada vocal se
reemplaza por el carácter que se indica en la tabla y el resto de los caracteres (incluyendo a las
vocales acentuadas) se mantienen sin cambios.

a e i o u

@ # $ % *

Realice un subprograma que reciba una secuencia de caracteres y retorne la codificación


correspondiente. Utilice la estructura “según” para la transformación.

Por ejemplo, si el usuario ingresa: Ayer, lunes, salimos a las once y 10.

La salida del programa debería ser: @y#r, l*n#s, s@l$m%s @ l@s %nc# y 10.

Para realizar este ejemplo, deberás investigar el método concat de la


clase String. Puedes encontrar estos ejemplos al final de la guía.

Revisemos lo aprendido hasta aquí

• Diseñar funciones

• Nombrarlas correctamente

32
• Determinar y definir retornos

• Comprender el funcionamiento de los


parámetros

• Poder mostrar el retorno de la función, alojar su


retorno y llamarlo desde el Algoritmo principal

• Saber elegir cuándo debe utilizarse una función

PROCEDIMIENTOS (FUNCIONES SIN RETORNO)


Los procedimientos son básicamente un conjunto de instrucciones que se ejecutan sin retornar
ningún valor, hay quienes dicen que un procedimiento no recibe valores o argumentos, sin
embargo, en la definición no hay nada que se lo impida. En el contexto de Java un procedimiento
es básicamente una función cuyo tipo de retorno es void, los que indica que devuelven ningún
resultado.

[acceso][modificador] void nombreFuncion([tipo] nombreArgumento){


/*
* Bloque de instrucciones
*/
}

mostrarInfo(nombre, edad);

Acerca de los argumentos o parámetros:

• Hay algunos detalles respecto a los argumentos de un método, veamos:

• Una función, un método o un procedimiento pueden tener una cantidad infinita de


parámetros, es decir pueden tener cero, uno, tres, diez, cien o más parámetros. Aunque
habitualmente no suelen tener más de 4 o 5.

33
• Si una función tiene más de un parámetro cada uno de ellos debe ir separado por una
coma.

• Los argumentos de una función también tienen un tipo y un nombre que los identifica. El
tipo del argumento puede ser cualquiera y no tiene relación con el tipo del método.

• Al recibir un argumento nada nos obliga a hacer uso de éste al interior del método, sin
embargo, para que recibirlo si no lo vamos a usar.

• En java los argumentos que sean variables de tipos primitivos (int, double, char, etc.) se
van a pasar por valor, mientras que los objetos (String, Integer, etc.) y los arreglos se
van a pasar por referencia. Nota: el concepto de objetos lo vamos a ver más adelante.

EJERCICIO 12
Crea un procedimiento EsMultiplo que reciba los dos números pasados por el usuario, validando
que el primer numero múltiplo del segundo y e imprima si el primer numero es múltiplo del
segundo, sino informe que no lo son.

En las guías que vienen luego de esta, usaremos MUCHAS funciones y


procedimientos. Recuerda que utilizaremos los procedimientos
UNICAMENTE cuando el objetivo del mismo es MOSTRAR información.
Caso contrario debe retornarse el resultado de la operación que realice.

Revisemos lo aprendido hasta aquí

• Diseñar procedimientos

• Nombrarlos correctamente

• Comprender el funcionamiento de los


parámetros

• Llamar al procedimiento desde el algoritmo


principal

• Saber elegir cuándo debe utilizarse un


procedimiento.

34
PARREGLOS: VECTORES Y MATRICESP
Un arreglo es un contenedor de objetos que tiene un número fijo de valores del mismo tipo. El
tamaño del arreglo es establecido cuando el arreglo es creado y luego de su creación su tamaño
es fijo, esto significa que no puede cambiar. Cada una de los espacios de un arreglo es llamada
elemento y cada elemento puede ser accedido por un índice numérico que arranca desde 0 hasta
el tamaño menos uno. Por ejemplo, si tenemos un vector de 5 elementos mis índices serian: 0-1-
2-3-4.

Al igual que la declaración de otros tipos de variables, la declaración de un arreglo tiene dos
componentes: el tipo de dato del arreglo y su nombre. El tipo de dato del arreglo se escribe
como tipo[], en donde, tipo es el tipo de dato de cada elemento contenido en él. Los corchetes
sirven para indicar que esa variable va a ser un arreglo. El tamaño del arreglo no es parte de su
tipo (es por esto que los corchetes están vacíos).

Una vez declarado un arreglo hay que crearlo/dimensionarlo, es decir, hay que asignar al arreglo
un tamaño para almacenar los valores. La creación de un arreglo se hace con el operador new.
Recordemos que las matrices son bidimensionales por lo que tienen dos tamaños, uno para las
filas y otro para las columnas de la matriz.

Declaración y creación de un Vector

tipo[] arregloV = new tipo[Tamaño];

Declaración y creación de una Matriz

tipo[][] arregloM = new tipo[Filas][Columnas];

35
EJERCICIO 13
Crea un vector llamado ‘Equipo’ cuya dimensión sea la cantidad de compañeros de equipo y
define su tipo de dato de tal manera que te permita alojar sus nombres más adelante.

Revisemos lo aprendido hasta aquí

• Crear vectores y matrices que puedan alojar


distintos tipos de dato

ASIGNAR ELEMENTOS A UN ARREGLO


Cuando queremos ingresar un elemento en nuestro arreglo vamos a tener que elegir el subíndice
en el que lo queremos guardar. Una vez que tenemos el subíndice decidido tenemos que invocar
nuestro vector por su nombre y entre corchetes el subíndice en el que lo queremos guardar.

Después, pondremos el signo de igual (que es el operador de asignación) seguido del elemento a
guardar. En las matrices vamos a necesitar dos subíndices y dos corchetes para representar la
posición de la fila y la columna donde queremos guardar el elemento.

Asignación de un Vector

vector[0] = 5;

Asignación de una Matriz

matriz[0][0] = 6;

Esta forma de asignación implica asignar todos los valores de nuestro arreglo de uno en uno,
esto va a conllevar un trabajo bastante grande dependiendo del tamaño de nuestro arreglo.

Entonces, para poder asignar varios valores a nuestro arreglo y no hacerlo de uno en uno
usamos un bucle Para. El bucle Para, al poder asignarle un valor inicial y un valor final a una
variable, podemos adaptarlo fácilmente a nuestros arreglos. Ya que, pondríamos el valor inicial
de nuestro arreglo y su valor final en las respectivas partes del Para. Nosotros, usaríamos la
variable creada en el Para, y la pasaríamos a nuestro arreglo para representar todos los
subíndices del arreglo, de esa manera, recorriendo todas las posiciones y asignándole a cada
posición un elemento.

Para poder asignar varios elementos a nuestra matriz, usaríamos dos bucles Para anidados., ya
que un Para recorrerá las filas (variable i) y otro las columnas (variable j).

Asignación de un Vector

36
for (int i = 0; i < 5; i++) {

vector[i] = 5;

Asignación de una Matriz

for (int i = 0; i < 3; i++) {

for (int j = 0; j < 3; j++) {

matriz[i][j] = 6;

Pueden encontrar un ejemplo de vectores y matrices en tu Aula Virtual.

Vector:

Matriz:

37
EJERCICIO 14
Utilizando un Bucle for, aloja en el vector Equipo, los nombres de tus compañeros de equipo

Revisemos lo aprendido hasta aquí

• Asignar valores a vectores y matrices de forma


manual o con bucles.

VECTORES Y MATRICES EN SUBPROGRAMAS


Los arreglos se pueden pasar como parámetros a un subprograma (función o procedimiento) del
mismo modo que pasamos variables, poniendo el tipo de dato delante del nombre del vector o
matriz, pero deberemos sumarle las llaves para representar que es un vector o matriz. Sin

38
embargo, hay que tener en cuenta que la diferencia entre los arreglos y las variables, es que los
arreglos siempre se pasan por referencia.

public static void llenarVector(int[] vector){

public static void mostrarMatriz(int[][] matriz){

A diferencia de Pseint, en Java si podemos devolver un vector o una matriz en una función para
usarla en otro momento. Lo que hacemos es poner como tipo de dato de la función, el tipo de
dato que tendra el vector y asi poder devolverlo.

public static int devolverVector(){

int[] vector = new int[5];

return vector;

Revisemos lo aprendido hasta aquí

• Operar con vectores y matrices desde funciones


o procedimientos.

PCLASES DE UTILIDADP
Dentro del API de Java existe una gran colección de clases que son muy utilizadas en el
desarrollo de aplicaciones. Las clases de utilidad son clases que definen un conjunto de métodos
que realizan funciones, normalmente muy reutilizadas. Estas nos van a ayudar junto con las
estructuras de control, a lograr resolver problemas de manera más sencilla.

Entre las clases de utilidad de Java más utilizadas y conocidas están las siguientes: Arrays,
String, Integer, Math, Date, Calendar y GregorianCalendar. En esta guía solo vamos a ver la
Math, String para hacer algunos ejercicios y después veremos el resto en mayor profundidad.

CLASE STRING

Método Descripción.

charAt(int index) Retorna el carácter especificado en la


posición index

39
equals(String str) Sirve para comparar si dos cadenas son
iguales. Devuelve true si son iguales y
false si no.

equalsIgnoreCase(String str) Sirve para comparar si dos cadenas son


iguales, ignorando la grafía de la
palabra. Devuelve true si son iguales y
false si no.

compareTo(String otraCadena) Compara dos cadenas de caracteres


alfabéticamente. Retorna 0 si son
iguales, entero negativo si la primera es
menor o entero positivo si la primera es
mayor.

concat(String str) Concatena la cadena del parámetro al


final de la primera cadena.

contains(CharSequence s) Retorna true si la cadena contiene la


secuencia tipo char del parámetro.

endsWith(String suffix) Retorna verdadero si la cadena es igual


al objeto del parámetro

indexOf(String str) Retorna el índice de la primera


ocurrencia de la cadena del parámetro

isEmpty() Retorna verdadero si la longitud de la


cadena es 0

length() Retorna la longitud de la cadena

replace(char oldChar, char newChar) Retorna una nueva cadena


reemplazando los caracteres del primer
parámetro con el carácter del segundo
parámetro

split(String regex) Retorna un arreglo de cadenas


separadas por la cadena del parámetro

40
startsWith(String prefix) Retorna verdadero si el comienzo de la
cadena es igual al prefijo del parámetro.

substring(int beginIndex) Retorna la sub cadena desde el carácter


del parámetro

substring(int beginIndex, int Retorna la sub cadena desde el carácter


endIndex) del primer parámetro hasta el carácter
del segundo parámetro

toCharArray() Retorna el conjunto de caracteres de la


cadena

toLowerCase() Retorna la cadena en minúsculas

toUpperCase() Retorna la cadena en mayúsculas

Java al ser un lenguaje de tipado estático, requiere que para pasar una variable de un tipo de
dato a otro necesitemos usar un conversor. Por lo que, para convertir cualquier tipo de dato a un
String, utilicemos la función valueOf(n).

Ejemplo:

int numEntero = 4;

String numCadena = String.valueOf(numEntero);

Si quisiéramos hacerlo al revés, de String a int se usa el método de la clase Integer, parseInt().

Ejemplo:

String numCadena = "1";

int numEntero = Integer.parseInt(numCadena);

CLASE MATH
En ocasiones nos vemos en la necesidad de incluir cálculos, operaciones, matemáticas,
estadísticas, etc en nuestros programas Java.

41
Es cierto que muchos cálculos se pueden hacer simplemente utilizando los operadores
aritméticos que java pone a nuestra disposición, pero existe una opción mucho más sencilla de
utilizar, sobre todo para cálculos complicados. Esta opción es la clase Math del
paquete java.lang.

La clase Math nos ofrece numerosos y valiosos métodos y constantes estáticos, que podemos
utilizar tan sólo anteponiendo el nombre de la clase.

Método Descripción.

abs(double a) Devuelve el valor absoluto de un valor double introducido como


parámetro.

abs(int a) Devuelve el valor absoluto de un valor Entero introducido como


parámetro.

abs(long a) Devuelve el valor absoluto de un valor long introducido como


parámetro.

max(double a, double b) Devuelve el mayor de dos valores double

max(int a, int b) Devuelve el mayor de dos valores Enteros.

max(long a, long b) Devuelve el mayor de dos valores long.

min(double a, double b) Devuelve el menor de dos valores double.

min(int a, int b) Devuelve el menor de dos valores enteros.

min(long a, long b) Devuelve el menor de dos valores long.

pow(double a, double b) Devuelve el valor del primer argumento elevado a la potencia del
segundo argumento.

random() Devuelve un double con un signo positivo, mayor o igual que 0.0 y
menor que 1.0.

round(double a) Devuelve el long redondeado más cercano al double introducido.

42
sqrt(double a) Devuelve la raíz cuadrada positiva correctamente redondeada de un
double.

floor(double a) Devuelve el entero más cercano por debajo.

Método random() de la clase Math

El método random podemos utilizarlo para generar números al azar. El rango o margen con
el que trabaja el método random oscila entre 0.0 y 1.0 (Este último no incluido)

Por lo tanto, para generar un número entero entre 0 y 9, hay que escribir la siguiente sentencia:

int numero = (int) (Math.random() * 10);

Pueden encontrar un ejemplo de las funciones de la clase String y Math


en tu Aula Virtual.

PEJERCICIOS DE APRENDIZAJEP

43
A partir de ahora comenzaremos a aprender cómo los mismos algoritmos que diseñamos en
PSeInt podemos escribirlos también en Java, simplemente haciendo una traducción de cada una
de las estructuras de control vistas en PSeInt a Java.

Si bien en esta guía se proponen nuevos problemas, se sugiere que los mismos ejercicios ya
implementados en PSeInt sean traducidos al lenguaje de programación Java.

También recordamos que las resoluciones de nuestros ejercicios debemos subirlas a un


repositorio propio de GitHub para seguir practicando el uso de Git y GitHub

VIDEOS: Te sugerimos ver los videos relacionados con este tema, antes de empezar los ejercicios, los
podrás encontrar en tu aula virtual o en nuestro canal de YouTube.

pLos ejercicios van a seguir con el siguiente filtro de dificultad:p

Dificultad Baja Dificultad Media Dificultad Alta

1. Escribir un programa que pida dos números enteros por teclado y calcule la suma de los
dos. El programa deberá después mostrar el resultado de la suma

2. Escribir un programa que pida tu nombre, lo guarde en una variable y lo muestre por
pantalla.

3. Escribir un programa que pida una frase y la muestre toda en mayúsculas y después toda
en minúsculas. Nota: investigar la función toUpperCase() y toLowerCase() en
Java.

4. Dada una cantidad de grados centígrados se debe mostrar su equivalente en grados


Fahrenheit. La fórmula correspondiente es: F = 32 + (9 * C / 5).

5. Escribir un programa que lea un número entero por teclado y muestre por pantalla el
doble, el triple y la raíz cuadrada de ese número. Nota: investigar la función
Math.sqrt().

Condicionales en Java

6. Crear un programa que dado un numero determine si es par o impar.

7. Crear un programa que pida una frase y si esa frase es igual a “eureka” el programa
pondrá un mensaje de Correcto, sino mostrará un mensaje de Incorrecto. Nota:
investigar la función equals() en Java.

8. Realizar un programa que solo permita introducir solo frases o palabras de 8 de largo. Si
el usuario ingresa una frase o palabra de 8 de largo se deberá de imprimir un mensaje
por pantalla que diga “CORRECTO”, en caso contrario, se deberá imprimir
“INCORRECTO”. Nota: investigar la función Lenght() en Java.

44
9. Escriba un programa que pida una frase o palabra y valide si la primera letra de esa frase
es una ‘A’. Si la primera letra es una ‘A’, se deberá de imprimir un mensaje por pantalla
que diga “CORRECTO”, en caso contrario, se deberá imprimir “INCORRECTO”. Nota:
investigar la función Substring y equals() de Java.

Bucles y sentencias de salto break y continue

10. Escriba un programa en el cual se ingrese un valor límite positivo, y a continuación


solicite números al usuario hasta que la suma de los números introducidos supere el
límite inicial.

11. Realizar un programa que pida dos números enteros positivos por teclado y muestre por
pantalla el siguiente menú:

MENU
1. Sumar
2. Restar
3. Multiplicar
4. Dividir
5. Salir
Elija opción:

El usuario deberá elegir una opción y el programa deberá mostrar el resultado por
pantalla y luego volver al menú. El programa deberá ejecutarse hasta que se elija la
opción 5. Tener en cuenta que, si el usuario selecciona la opción 5, en vez de salir del
programa directamente, se debe mostrar el siguiente mensaje de confirmación: ¿Está
seguro que desea salir del programa (S/N)? Si el usuario selecciona el carácter ‘S’ se sale
del programa, caso contrario se vuelve a mostrar el menú.

12. Realizar un programa que simule el funcionamiento de un dispositivo RS232, este tipo de
dispositivo lee cadenas enviadas por el usuario. Las cadenas deben llegar con un formato
fijo: tienen que ser de un máximo de 5 caracteres de largo, el primer carácter tiene que
ser X y el último tiene que ser una O.

Las secuencias leídas que respeten el formato se consideran correctas, la secuencia


especial “&&&&&” marca el final de los envíos (llamémosla FDE), y toda secuencia
distinta de FDE, que no respete el formato se considera incorrecta.

Al finalizar el proceso, se imprime un informe indicando la cantidad de lecturas correctas


e incorrectas recibidas. Para resolver el ejercicio deberá investigar cómo se utilizan las
siguientes funciones de Java Substring(), Length(), equals().

13. Dibujar un cuadrado de N elementos por lado utilizando el carácter “*”. Por ejemplo, si el
cuadrado tiene 4 elementos por lado se deberá dibujar lo siguiente:

****
* *

45
* *
****

Vectores y Matrices en Java

14. Crea una aplicación que a través de una función nos convierta una cantidad de euros
introducida por teclado a otra moneda, estas pueden ser a dólares, yenes o libras. La
función tendrá como parámetros, la cantidad de euros y la moneda a converir que será
una cadena, este no devolverá ningún valor y mostrará un mensaje indicando el cambio
(void).

El cambio de divisas es:

* 0.86 libras es un 1 €

* 1.28611 $ es un 1 €

* 129.852 yenes es un 1 €

Funciones en Java

15. Realizar un algoritmo que rellene un vector con los 100 primeros números enteros y los
muestre por pantalla en orden descendente.

16. Realizar un algoritmo que rellene un vector de tamaño N con valores aleatorios y le pida
al usuario un numero a buscar en el vector. El programa mostrará donde se encuentra el
numero y si se encuentra repetido

17. Recorrer un vector de N enteros contabilizando cuántos números son de 1 dígito, cuántos
de 2 dígitos, etcétera (hasta 5 dígitos).

18. Realizar un programa que rellene un matriz de 4 x 4 de valores aleatorios y muestre la


traspuesta de la matriz. La matriz traspuesta de una matriz A se denota por B y se
obtiene cambiando sus filas por columnas (o viceversa).

46
19. Realice un programa que compruebe si una matriz dada es anti simétrica. Se dice que
una matriz A es anti simétrica cuando ésta es igual a su propia traspuesta, pero cambiada
de signo. Es decir, A es anti simétrica si A = -AT. La matriz traspuesta de una matriz A se
denota por AT y se obtiene cambiando sus filas por columnas (o viceversa).

En este caso la matriz es anti simétrica.

20. Un cuadrado mágico 3 x 3 es una matriz 3 x 3 formada por números del 1 al 9 donde la
suma de sus filas, sus columnas y sus diagonales son idénticas. Crear un programa que
permita introducir un cuadrado por teclado y determine si este cuadrado es mágico o no.
El programa deberá comprobar que los números introducidos son correctos, es decir,
están entre el 1 y el 9.

21. Dadas dos matrices cuadradas de números enteros, la matriz M de 10x10 y la matriz P de
3x3, se solicita escribir un programa en el cual se compruebe si la matriz P está contenida
dentro de la matriz M. Para ello se debe verificar si entre todas las submatrices de 3x3
que se pueden formar en la matriz M, desplazándose por filas o columnas, existe al
menos una que coincida con la matriz P. En ese caso, el programa debe indicar la fila y la
columna de la matriz M en la cual empieza el primer elemento de la submatriz P.

Ejemplo:

47
Como podemos observar nuestra submatriz P se encuentra en la matriz M en los índices:
4,4 - 4,5 - 4,6 - 5,4 - 5,5 - 5,6 - 6,4 - 6,5 - 6,6.

PEJERCICIOS DE APRENDIZAJE EXTRAP


Estos van a ser ejercicios para reforzar los conocimientos previamente vistos. Estos pueden
realizarse cuando hayas terminado la guía y tengas una buena base sobre lo que venimos
trabajando. Además, si ya terminaste la guía y te queda tiempo libre en las mesas, podes
continuar con estos ejercicios extra, recordando siempre que no es necesario que los termines
para continuar con el tema siguiente. Por ultimo, recordá que la prioridad es ayudar a los
compañeros de la mesa y que cuando tengas que ayudar, lo más valioso es que puedas explicar
el ejercicio con la intención de que tu compañero lo comprenda, y no sólo mostrarlo. ¡Muchas
gracias!

1. Dado un tiempo en minutos, calcular su equivalente en días y horas. Por ejemplo, si el


usuario ingresa 1600 minutos, el sistema debe calcular su equivalente: 1 día, 2 horas.

2. Declarar cuatro variables de tipo entero A, B, C y D y asignarle un valor diferente a cada


una. A continuación, realizar las instrucciones necesarias para que: B tome el valor de C,

48
C tome el valor de A, A tome el valor de D y D tome el valor de B. Mostrar los valores
iniciales y los valores finales de cada variable. Utilizar sólo una variable auxiliar.

3. Elaborar un algoritmo en el cuál se ingrese una letra y se detecte si se trata de una vocal.
Caso contrario mostrar un mensaje. Nota: investigar la función equals() de la clase
String.

4. Elaborar un algoritmo en el cuál se ingrese un número entre 1 y 10 y se muestre su


equivalente en romano.

5. Una obra social tiene tres clases de socios:

o Los socios tipo ‘A’ abonan una cuota mayor, pero tienen un 50% de descuento en
todos los tipos de tratamientos.

o Los socios tipo ‘B’ abonan una cuota moderada y tienen un 35% de descuento
para los mismos tratamientos que los socios del tipo A.

o Los socios que menos aportan, los de tipo ‘C’, no reciben descuentos sobre dichos
tratamientos.

o Solicite una letra (carácter) que representa la clase de un socio, y luego un valor
real que represente el costo del tratamiento (previo al descuento) y determine el
importe en efectivo a pagar por dicho socio.

6. Leer la altura de N personas y determinar el promedio de estaturas que se encuentran


por debajo de 1.60 mts. y el promedio de estaturas en general.

7. Realice un programa que calcule y visualice el valor máximo, el valor mínimo y el


promedio de n números (n>0). El valor de n se solicitará al principio del programa y los
números serán introducidos por el usuario. Realice dos versiones del programa, una
usando el bucle “while” y otra con el bucle “do - while”.

8. Escriba un programa que lea números enteros. Si el número es múltiplo de cinco debe
detener la lectura y mostrar la cantidad de números leídos, la cantidad de números pares
y la cantidad de números impares. Al igual que en el ejercicio anterior los números
negativos no deben sumarse. Nota: recordar el uso de la sentencia break.

9. Simular la división usando solamente restas. Dados dos números enteros mayores que
uno, realizar un algoritmo que calcule el cociente y el residuo usando sólo restas.
Método: Restar el dividendo del divisor hasta obtener un resultado menor que el divisor,
este resultado es el residuo, y el número de restas realizadas es el cociente.

Por ejemplo: 50 / 13:

50 – 13 = 37 una resta realizada

37 – 13 = 24 dos restas realizadas

49
24 – 13 = 11 tres restas realizadas

dado que 11 es menor que 13, entonces: el residuo es 11 y el cociente es 3.

¿Aún no lo entendiste? Recomendamos googlear división con restas sucesivas.

10. Realice un programa para que el usuario adivine el resultado de una multiplicación entre
dos números generados aleatoriamente entre 0 y 10. El programa debe indicar al usuario
si su respuesta es o no correcta. En caso que la respuesta sea incorrecta se debe permitir
al usuario ingresar su respuesta nuevamente. Para realizar este ejercicio investigue como
utilizar la función Math.random() de Java.

11. Escribir un programa que lea un número entero y devuelva el número de dígitos que
componen ese número. Por ejemplo, si introducimos el número 12345, el programa
deberá devolver 5. Calcular la cantidad de dígitos matemáticamente utilizando el
operador de división. Nota: recordar que las variables de tipo entero truncan los
números o resultados.

12. Necesitamos mostrar un contador con 3 dígitos (X-X-X), que muestre los números del 0-
0-0 al 9-9-9, con la particularidad que cada vez que aparezca un 3 lo sustituya por una E.
Ejemplo:

0-0-0

0-0-1

0-0-2

0-0-E

0-0-4

0-1-2

0-1-E

Nota: investigar función equals() y como convertir números a String.

13. Crear un programa que dibuje una escalera de números, donde cada línea de números
comience en uno y termine en el número de la línea. Solicitar la altura de la escalera al
usuario al comenzar. Ejemplo: si se ingresa el número 3:

1
12
123

14. Se dispone de un conjunto de N familias, cada una de las cuales tiene una M cantidad de
hijos. Escriba un programa que pida la cantidad de familias y para cada familia la
cantidad de hijos para averiguar la media de edad de los hijos de todas las familias.

50
15. Crea una aplicación que le pida dos números al usuario y este pueda elegir entre sumar,
restar, multiplicar y dividir. La aplicación debe tener una función para cada operación
matemática y deben devolver sus resultados para imprimirlos en el main.

16. Diseñe una función que pida el nombre y la edad de N personas e imprima los datos de
las personas ingresadas por teclado e indique si son mayores o menores de edad.
Después de cada persona, el programa debe preguntarle al usuario si quiere seguir
mostrando personas y frenar cuando el usuario ingrese la palabra “No”.

17. Crea una aplicación que nos pida un número por teclado y con una función se lo pasamos
por parámetro para que nos indique si es o no un número primo, debe devolver true si es
primo, sino false.

Un número primo es aquel solo puede dividirse entre 1 y si mismo. Por ejemplo: 25 no es
primo, ya que 25 es divisible entre 5, sin embargo, 17 si es primo.

¿Qué son los números primos?

Básicamente, un número primo es un número natural que tiene solo dos divisores o
factores: 1 y el mismo número. Es decir, es primo aquel número que se puede dividir
por uno y por el mismo número.

El primer número primo es 2, y hay 25 números primos entre 1 y 100, ellos son: 2, 3, 5,
7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89 y 97.

18. Realizar un algoritmo que calcule la suma de todos los elementos de un vector de tamaño
N, con los valores ingresados por el usuario.

19. Escriba un programa que averigüe si dos vectores de N enteros son iguales (la
comparación deberá detenerse en cuanto se detecte alguna diferencia entre los
elementos).

20. Crear una función rellene un vector con números aleatorios, pasándole un arreglo por
parámetro. Después haremos otra función o procedimiento que imprima el vector.

21. Los profesores del curso de programación de Egg necesitan llevar un registro de las notas
adquiridas por sus 10 alumnos para luego obtener una cantidad de aprobados y
desaprobados. Durante el periodo de cursado cada alumno obtiene 4 notas, 2 por
trabajos prácticos evaluativos y 2 por parciales. Las ponderaciones de cada nota son:

Primer trabajo práctico evaluativo 10%

Segundo trabajo práctico evaluativo 15%

Primer Integrador 25%

Segundo integrador 50%

Una vez cargadas las notas, se calcula el promedio y se guarda en el arreglo. Al final del
programa los profesores necesitan obtener por pantalla la cantidad de aprobados y

51
desaprobados, teniendo en cuenta que solo aprueban los alumnos con promedio mayor o
igual al 7 de sus notas del curso.

22. Realizar un programa que rellene una matriz de tamaño NxM con valores aleatorios y
muestre la suma de sus elementos.

23. Construya un programa que lea 5 palabras de mínimo 3 y hasta 5 caracteres y, a medida
que el usuario las va ingresando, construya una “sopa de letras para niños” de tamaño de
20 x 20 caracteres. Las palabras se ubicarán todas en orden horizontal en una fila que
será seleccionada de manera aleatoria. Una vez concluida la ubicación de las palabras,
rellene los espacios no utilizados con un número aleatorio del 0 al 9. Finalmente imprima
por pantalla la sopa de letras creada.

Nota: Para resolver el ejercicio deberá investigar cómo se utilizan las siguientes funciones
de Java substring(), Length() y Math.random().

24. Realizar un programa que complete un vector con los N primeros números de la sucesión
de Fibonacci. Recordar que la sucesión de Fibonacci es la sucesión de los siguientes
números:

1, 1, 2, 3, 5, 8, 13, 21, 34, ...

Donde cada uno de los números se calcula sumando los dos anteriores a él. Por ejemplo:

La sucesión del número 2 se calcula sumando (1+1)

Análogamente, la sucesión del número 3 es (1+2),

Y la del 5 es (2+3),

Y así sucesivamente…

La sucesión de Fibonacci se puede formalizar de acuerdo a la siguiente fórmula:

Fibonaccin = Fibonaccin-1 + Fibonaccin-2 para todo n>1

Fibonaccin = 1 para todo n<=1

Por lo tanto, si queremos calcular el término “n” debemos escribir una función que reciba
como parámetro el valor de “n” y que calcule la serie hasta llegar a ese valor.

Para conocer más acerca de la serie de Fibonacci consultar el siguiente link:


https://quantdare.com/numeros-de-fibonacci/

52
53

También podría gustarte