Salta el contingut
 

Exercici: Proves de mètodes estàtics

Joan Puigcerver Ibáñez

Llicència: CC BY-NC-SA 4.0

(Reconeixement - NoComercial - CompartirIgual) 🅭

Proves de mètodes estàtics

ud4.methods

L'objectiu d'aquests exercicis és implementar i provar mètodes estàtics en Java.

Exercicis de Programació

A més dels exercicis següents, pots fer les proves de tots els mètodes estàtics que has implementat en el mòdul professional de Programació.

IsEven

Implementa i prova el mètode boolean isEven(int number), que determina si un nombre és parell o no.

IsLeapYear

Implementa i prova el mètode boolean isLeapYear(int year), que determina si un any és de traspàs o no.

NextSecond

Implementa i prova el mètode String nextSecond(int hour, int minute, int second), que, donades una hora, uns minuts i uns segons, retorna l'hora del segon següent en format HH:MM:SS.

Exemple: Execució de nextSecond()

Es calcula el segon següent a les 23:59:59:

String time = NextSecond.nextSecond(23, 59, 59);
System.out.println(time);
00:00:00

S'observa que, en passar de la mitjanit, l'hora torna a començar des de 00:00:00.

DotLine

Implementa i prova el mètode String dotLine(int length), que retorna una línia de punts de la longitud especificada.

Exemple: Execució de dotLine()

Es genera una línia de 5 punts:

String dots = DotLine.dotLine(5);
System.out.println(dots);
.....

FilterVowels

Implementa i prova el mètode String filterVowels(String text), que retorna un text sense les vocals.

Exemple: Execució de filterVowels()

S'eliminen les vocals del text Hello World!:

String text = FilterVowels.filterVowels("Hello World!");
System.out.println(text);
Hll Wrld!

Collatz

Implementa el mètode int collatz(int n), que aplica la conjectura de Collatz – Viquipèdia a un nombre enter i retorna el nombre d'iteracions necessàries per arribar a 1.

El mètode ha d'aplicar l'operació següent fins arribar a 1:

  • Si el nombre és parell, es divideix entre 2.
  • Si el nombre és senar, es multiplica per 3 i se li suma 1.
\[ F(n) = \begin{cases} \frac{n}{2} & \text{si } n \text{ és parell}\\ 3n + 1 & \text{si } n \text{ és senar} \end{cases} \]

La conjectura afirma que, si s'aplica aquesta operació de manera repetida a qualsevol nombre natural, sempre s'arriba a 1.

Per últim, prova el mètode amb proves unitàries. Per saber quins resultats ha d'obtindre el programa, pots utilitzar la Collatz Conjecture Calculator – Good Calculators.

Casos de prova

Pots utilitzar els casos de prova següents:

\(N\) Resultat
1 0
5 5
8 3
11 14
27 111

Fibonacci

Implementa el mètode int fibonacci(int n), que calcula el terme \(n\) de la successió de Fibonacci. La successió de Fibonacci és una successió de nombres enters en què cada terme és la suma dels dos anteriors.

\[ F(n) = \begin{cases} 0 & \text{si } n = 0\\ 1 & \text{si } n = 1\\ F(n-1) + F(n-2) & \text{si } n > 1 \end{cases} \]

Per últim, prova el mètode amb proves unitàries. Per saber quins resultats ha d'obtindre el programa, pots utilitzar la Fibonacci Calculator – CalculatorSoup.

Casos de prova

Pots utilitzar els casos de prova següents:

\(N\) Resultat
0 0
1 1
2 1
3 2
4 3
5 5
6 8
7 13
8 21
9 34

ArrayUtils

Implementa els mètodes següents i prova'ls amb proves unitàries:

  • int min(int[] array): retorna el valor mínim d'un array d'enters.
  • int max(int[] array): retorna el valor màxim d'un array d'enters.
  • int sum(int[] array): retorna la suma dels elements d'un array d'enters.
  • int[] reverse(int[] array): inverteix l'ordre dels elements d'un array d'enters.
  • int[] sort(int[] array): ordena els elements d'un array d'enters de menor a major.
  • int countAppearances(int[] array, int value): retorna el nombre de vegades que apareix un valor en un array d'enters.

Pots organitzar les proves unitàries en diferents classes o amb classes internes @Nested.

[]{style="color: var(--md-admonition-color--extension)"} Ampliacions

Si has acabat els exercicis anteriors, pots aprofundir amb aquesta proposta:

📌 Aquest document pot quedar desactualitzat després d’imprimir-lo. Pots consultar la versió més recent a la pàgina web.
🌿 Abans d’imprimir aquest document, considera si és realment necessari. Redueix el consum de paper i ajuda a protegir el nostre entorn.