5 - Guía Intro Java 2021
5 - Guía Intro Java 2021
5 - Guía Intro Java 2021
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 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.
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.
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.
SENTENCIAS CONDICIONALES
Los condicionales son sentencias de control que cambian el flujo de ejecución de un
programa de acuerdo a 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 sentencias condicionales, las sentencias if / else y la sentencia
switch.
if(<condición>){
<sentencias>
}
4
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 sentencia es la siguiente:
if(<condición>){
<sentencias A>
} 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;
default:
<sentencias3>
}
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.
5
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.
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.
FUNCIONES
Las funciones o métodos son un conjunto de líneas de código (instrucciones),
encapsulados en un bloque, usualmente reciben parámetros, cuyos valores utilizan para
efectuar operaciones y adicionalmente retornan un valor. En otras palabras una función
puede recibir parámetros o 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 algo, entonces no es una función. Los tipos que pueden usarse en la función
son: int, doble, boolean y String
7
[acceso][modificador][tipo] nombreFuncion([tipo] nombreArgumento, …….){
/*
* Bloque de instrucciones
*/
return valor;
}
PROCEDIMIENTOS
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 un método o función cuyo tipo de retorno es void
que no nos obliga a utilizar una sentencia return.
/*
* Bloque de instrucciones
*/
8
ARREGLOS: VECTORES Y MATRICES
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.
}
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 en el algoritmo principal (main). 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.
return vector;
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 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
6. Dada las horas trabajadas de una persona y el valor por hora. Calcular su salario e
imprimirlo. Salario = Hs. trabajadas * valor por hora
7. 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().
14
VER VIDEO: Condicionales en Java
10. Implementar un programa que dado dos números enteros determine cuál es el
mayor y lo muestre por pantalla.
12. 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.
13. Realizar un programa que pida 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.
14. 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.
16. 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.
o Los socios tipo ‘A’ abonan una cuota mayor, pero tienen un 50% de
descuento en todos los tipos de tratamientos odontológicos.
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.
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.
18. 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:
15
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”
19. 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.
22. 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”.
23. 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ú.
24. 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.
16
25. 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.
27. 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:
28. 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.
29. 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.
30. 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
17
31. 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
32. 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:
****
* *
* *
****
33. 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.
34. 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 **
35. 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.
36. 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
pasar que será una cadena, este no devolverá ningún valor y mostrará un mensaje
indicando el cambio (void).
18
37. 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”.
38. 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.
39. Realizar un algoritmo que rellene un vector con los 100 primeros números enteros y
los muestre por pantalla en orden descendente.
40. 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.
41. 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).
43. 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
44. 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.
45. 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 se obtienen 4 notas, 2
por trabajos prácticos evaluativos y 2 por parciales. Las ponderaciones de cada
nota son:
19
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 desaprobados, teniendo en cuenta que solo aprueban los alumnos
con promedio mayor o igual al 70% de sus notas del curso.
47. Realizar un programa que rellene una matriz de tamaño NxM con valores aleatorios
y muestre la suma de sus elementos.
48. 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).
50. 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.
Nota: Para resolver el ejercicio deberá investigar cómo se utilizan las siguientes
funciones de Java substring(), Length() y Math.random().
20
52. 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.
21