5 - Guía Intro Java 2020
5 - Guía Intro Java 2020
5 - Guía Intro Java 2020
Introducción
a JAVA
FUNDAMENTOS DEL LENGUAJE
Introducción a Java
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
La Máquina virtual Java (JVM) es una máquina virtual de proceso nativo, es decir,
ejecutable en una plataforma específica, capaz de interpretar y ejecutar instrucciones
expresadas en un código binario especial (el bytecode Java), el cual es generado por el
compilador del lenguaje Java. La JVM es una máquina implementada en software y cuya
emulación se realiza sobre una máquina real.
[<declaración_paquete>]
<declaración_importacion>*
<modificador>* <declaración_clase>{
<atributos>*
<constructores>*
<metodos>*
}
1
El orden de estos puntos es importante. Cualquier sentencia de importación debe
preceder todas las declaraciones de clases. Si usa una declaración de paquetes, el mismo
debe preceder tanto a las clases como a las importaciones. El nombre del archivo fuente
tiene que ser el mismo que el nombre de la declaración de la clase pública en ese archivo.
Un archivo fuente puede incluir más de una declaración de clase, pero sólo una puede ser
declarada pública. Si un archivo fuente no contiene clases públicas declaradas, el nombre
del archivo fuente no está restringido. Sin embargo, es una buena práctica tener un archivo
fuente para cada clase declarada y que el nombre del archivo sea idéntico al nombre de la
clase.
PAQUETES
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.
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 son jerárquicos
(al igual que una organización de directorios en disco) y están separados por puntos. Es
usual que sean escritos completamente en minúscula.
IMPORTACIÓN DE CLASES
Si una clase utiliza clases de otros paquetes, estas clases deben ser importadas. Las
sentencias de importación van entre la declaración del paquete y la declaración de clase.
Cuando se necesita usar paquetes hay que usar la sentencia import para decirle al
compilador dónde encontrar las clases. En efecto, el nombre del paquete forma parte del
nombre de las clases dentro del paquete.
CLASES
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 y las clases 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:
2
Declaración de clase {
Cuerpo de clase
}
MÉTODOS
Dentro del cuerpo de la clase se declaran los atributos y los métodos de la clase. Los
métodos son rutinas que contienen una o más sentencias que una vez ejecutadas
deberían llevar adelante un objetivo concreto. 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()
Para que un programa se pueda ejecutar, debe contener una clase que tenga un método
main() con la siguiente declaración:
public static void main(String[] args){
public: es un tipo de acceso 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 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.
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.
3
IDENTIFICADOR
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) y que califique claramente el concepto que
intenta representar en el contexto del problema que se está resolviendo.
COMENTARIOS
Los comentarios en los programas fuente son muy importantes en cualquier lenguaje.
Sirven para aumentar la facilidad de comprensión del código y para recordar ciertas cosas
sobre el mismo. Son porciones del programa fuente que no serán compiladas, y, por tanto,
no ocuparán espacio en el archivo “ejecutable”. Únicamente sirven para documentar.
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.
if(<condición>){
<sentencias A>
} else {
<sentencias B>
}
4
El flujo de control del programa funciona de la misma manera, cuando se ejecuta la
sentencia 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>).
if (<condicion1>) {
<sentencias A>
} else if(<condicion2>){
<sentencias B>
} else {
<sentencias C>
}
switch(<variable){
case <valor1>:
<sentencias1>
break;
case <valor2>:
<sentencias2>
break;
case <valor3>:
<sentencias3>
break;
default:
<sentencias4>
}
El bloque switch evalúa qué valor tiene la variable, y de acuerdo al 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.
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.
5
SENTENCIAS DE ITERACIÓN
Las sentencias de Iteración ejecutan un conjunto de sentencias tantas veces como lo
establezca una condición determinada.
While
while (<condición>) {
<sentencias>
}
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>);
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 sentencias después del “do” siempre
se ejecutan al menos una vez.
For
La sentencia 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 sentencia for se puede expresar del siguiente modo:
6
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.
La sentencia for también ha sido mejorada para iterar de manera más compacta las
colecciones y los arreglos, tema que se verá más adelante en este curso. Esta versión
mejorada se conoce como for-each.
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 3bucle, 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.
Sentencias de Salto
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.
Continue
La sentencia continue altera la ejecución del cuerpo de un bucle, 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.
7
FUNCIONES
/*
* Bloque de instrucciones
*/
return valor;
}
PROCEDIMIENTOS
/*
* Bloque de instrucciones
*/
8
Consejos acerca de return:
Un arreglo es un contenedor de objetos que tiene un número fijo de valores del mismo tipo.
La longitud del arreglo es establecida cuando el arreglo es creado y luego de su creación
su longitud es fija. Cada una de las celdas de un arreglo es llamada elemento y cada
elemento puede ser accedido por un índice numérico.
Una vez declarado un arreglo hay que crearlo, es decir, hay que asignar al arreglo memoria
suficiente para almacenar los valores. La creación de un arreglo se hace con el operador
new.
9
PREGUNTAS DE APRENDIZAJE
1) El archivo de un programa en Java debe terminar con la extensión de archivo:
a) .class
b) .java
c) .jar
d) Ninguna de las anteriores
a) .class
b) .java
c) .jar
d) Ninguna de las anteriores
a) Con package
b) Con códigos
c) Con el programa o método main()
d) Todas las anteriores
a) System.out.printer()
b) System.out.prin()
c) System.out.println()
d) Ninguna de las anteriores
10
7) Teniendo en cuenta que los paquetes y las clases son análogos a las carpetas y
archivos utilizadas por el sistema operativo, ¿el nombre de la clase debe ser
diferente al del paquete?
a) Siempre
b) Nunca
c) No importa
d) Ninguna de las anteriores
a) Java
b) Javac
c) Javax
d) Execute
a) Entero
b) Decimal
c) Carácter
d) Ninguno de los anteriores
a) String
b) Continue
c) Package
d) Import
a) Try y break
b) Break y continue
c) Continue y switch
d) While y break
11
13) ¿Qué diferencia hay entre un bucle while y un bucle for?
a) El bucle for puede llegar a ejecutarse nunca pero el while siempre se ejecuta al
menos una vez.
b) El bucle for se ejecuta un número determinado de veces y el while un número
indeterminado de veces
c) El bucle for no puede convertirse en un bucle while, pero sí al contrario.
d) El El bucle while permite su inicialización, pero el bucle for no lo permite.
PREGUNTAS EXTRA:
1) Investigue al menos otros 5 tipos de proyectos que pueden generarse desde el entorno
y para qué sirven esos tipos de proyectos.
12
EJERCICIOS DE APRENDIZAJE
PRIMEROS PASOS
1. Instalando Java: La primera tarea que tenemos que llevar adelante es la instalación
del entorno de desarrollo.
Lo primero que haremos será instalar Java en nuestras computadoras. Para ello debemos
descargarlo a través del siguiente link:
Una vez instalado vamos a corroborar de que el entorno ha sido instalado de manera
correcta. En la consola ejecutaremos el siguiente comando:
java -version
ENTORNOS DE DESARROLLO
Una vez instalado Java procedemos a instalar un entorno de desarrollo que proporciona
una serie de servicios y herramientas integrales que tienen como fin facilitar las tareas de
desarrollo, testing e implementación de software. Para llevar adelante el curso
recomendamos instalar NetBeans, pero se puede utilizar cualquiera de los siguientes IDEs:
NetBeans IDE
Eclipse
13
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.
Para la realización cada uno de los siguientes ejercicios se debe definir una clase y colocar
toda la implementación dentro del método main() de dicha clase, tal cual se indica en el
video. Para conocer los tipos de datos y operadores disponibles en Java pueden consultar
el “Apéndice A” .
Dificultad Baja
Dificultad Media
Dificultad Alta
2. 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.
4. Dada las horas trabajadas de una persona y el valor por hora. Calcular su salario e
imprimirlo. Salario = Hs. trabajadas * valor por hora
14
8. Implementar un programa que lea los coeficientes de una ecuación de 2º grado
(ax²+bx+c=0), y muestre sus soluciones reales. Si no existen, se debe mostrar un
mensaje por pantalla. Para resolver la ecuación se debe calcular el discriminante:
Disc = b² - 4*a*c
x1 = x2 = -b / 2
Finalmente, si el discriminante es menor que 0 significa que las dos raíces son
complejas conjugadas. En este caso se debe mostrar un mensaje por pantalla.
9. Escribir un programa que permita ingresar dos valores reales de las coordenadas X
e Y de un punto del plano cartesiano. Luego, el programa debe mostrar una leyenda
que indique a qué cuadrante pertenece el punto, o en su defecto, si el punto se
encuentra sobre alguna de las cuatro ramas de los ejes cartesianos:
10. Ingresar un número entero cuyo dominio pertenezca al intervalo [0, 9999]. El
programa debe primero validar que el número pertenezca al dominio, y luego, indicar si
el número ingresado es múltiplo de 2, 3 o 5; o en su defecto, si no es múltiplo de
ninguno de ellos.
15
11. Una obra social tiene tres clases de socios. Los socios tipo ‘A’ abonan una cuota
mayor, pero tienen un 50% de descuento en todos los tipos de tratamientos
odontológicos. Los socios tipo ‘B’ abonan una cuota moderada y tienen un 35% de
descuento para los mismos tratamientos que los socios del tipo A. Los socios que
menos aportan, los de tipo ‘C’, no reciben descuentos sobre dichos tratamientos.
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.
14. 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.
15. 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:
16
16. Pedir que se ingrese el día, mes y año de una fecha e indicar si la fecha ingresada
es correcta. Se debe tener en cuenta que hay meses con 28, 30 y 31 días.
17. 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”.
19. 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ú.
20. Desde un dispositivo RS232 un programa lee caracteres enviados por un sensor.
Las lecturas se realizan de a 5 caracteres (buffer) por vez, los cuales deben llegar con
un formato fijo: el primer carácter tiene que ser X y el último tiene que ser 0. 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 sea correcta se considera inválida. Al finalizar el proceso, se
imprime un informe indicando los porcentajes de lecturas correctas e inválidas
recibidas. Para resolver el ejercicio deberá investigar cómo se utilizan las siguientes
funciones de Java substring() y Length().
17
21. 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.
22. 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.
23. 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:
24. 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.
25. 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.
26. 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
27. Necesitamos mostrar un contador con 5 dígitos (X-X-X-X-X), que muestre los
números del 0-0-0-0-0 al 9-9-9-9-9, con la particularidad que cada vez que aparezca un
3 lo sustituya por una E. Ejemplo:
18
0-0-0-0-0
0-0-0-0-1
0-0-0-0-2
0-0-0-0-E
0-0-0-0-4
.
.
.
0-0-0-1-2
0-0-0-1-E
28. 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:
****
****
****
****
29. Se dispone de un conjunto de N familias, cada una de las cuales tiene un M número
de hijos. Escriba un programa para averiguar la media de edad de los hijos de todas las
familias.
30. Realizar un programa que lea 5 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 **
9 *********
31. Crea una aplicación que le pida dos numeros 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.
32. Crea un aplicación que nos convierta una cantidad de euros introducida por
teclado a otra moneda, estas pueden ser a dolares, yenes o libras. El procedimiento
tendrá como parámetros, la cantidad de euros y la moneda a pasar que sera una
cadena, este no devolverá ningún valor, mostrara un mensaje indicando el cambio
(void).
19
33. 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.
Un buen truco para calcular la raíz cuadrada del numero e ir comprobando que si es
divisible desde ese numero hasta 1.
34. 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. El
método debe preguntarle al usuario si quiere seguir mostrando personas y frenar
cuando el usuario ingrese la palabra “No”.
35. Realizar un algoritmo que rellene un vector con los 100 primeros números enteros y
los muestre por pantalla en orden descendente.
36. 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).
38. Crear una función rellene un vector con números aleatorios, pasándole un arreglo
por parámetro. Esta función debe devolver el arreglo al main y pasarle el vector lleno a
un procedimiento que imprima el vector.
39. Los profesores del curso de programación de Egg necesitan llevar un registro de las
notas adquiridas por sus 50 alumnos para luego obtener un listado de aprobados y
desaprobados. Durante el periodo de cursado se obtienen 4 notas, 2 por trabajos
prácticos evaluativos y 2 por parciales. Las ponderaciones de cada nota son:
Una vez cargadas las notas, los profesores necesitan obtener por pantalla una lista de
aprobados y desaprobados, teniendo en cuenta que solo aprueban los alumnos
con promedio mayor o igual al 70% de sus notas del curso.
20
40. Realice un programa que compruebe si una matriz dada es antisimétrica. Se dice
que una matriz A es antisimétrica cuando ésta es igual a su propia traspuesta, pero
cambiada de signo. Es decir, A es antisimé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).
42. 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.
A B C D E
1 6 5 9 19 11
2 45 23 21 17 30
3 15 7 23 25 2
4 75 26 38 49 19
5 2 15 76 1 45
6 92 82 4 20 13
21
44. 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 concluía 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().
45. 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:
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:
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.
22