← Tornar a l'índex d'exercicis

Exercicis i Qüestionaris U1: Elements Bàsics

Autoavaluació interactiva d'U1: Elements Bàsics

Aquests qüestionaris et permeten comprovar la teva comprensió dels conceptes bàsics de programació: literals, estructura, variables, operadors aritmètics/lògics, operador ternari, expressions switch i càsting/parsing. Selecciona o escriu les teves respostes i clica sobre el botó Comprovar per veure la correcció instantània.

1. Literals i Estructura d'un Programa

Comprova el teu domini dels tipus de dades bàsics i com es representen a la memòria.

Emparella els tipus de literals
String
"4631###0207"
Enter
100_000_000
Caracter
'H'
Booleà
false
Decimal
1.75f
Literal invàlid
'text'
Troba el literal invàlid
"10000000"
'10000000'
10_000_000
10000000
10000000f
Selecciona els literals que NO són strings
7000
"7000"
true
'3'
"false"
"3"
'a'
Els caracters literals s'escriuen com
'A', 'B', 'C',...
A, B, C, ...
{A}, {B}, {C}, ...
"A", "B", "C", ...
Selecciona els literals string vàlids
443
'q'
"q"
'5'
"text"
"2312"
true
Selecciona les sentències que NO són vàlides
"123456"  és un número
"1"  és un string
'8'  és un caracter
1  és un número
True  és un booleà
1f és un enter
Quin literal és adequat per a representar una adreça postal?
un caracteral literal
un enter literal
un string literal
un decimal literal
un booleà literal
Selecciona els literals numèrics (enters i decimals)
"500f"
'8'
"800_000"
100_000_000
0
0.0f
3_0_0f

Què imprimirà el següent codi?

IO.print("1"); IO.print("2"); IO.println("3"); IO.println(); IO.println("4");
1234
123 4
12 3 4
123 4

Què imprimirà el següent codi?

IO.print("**"); IO.println(); IO.println("**"); IO.print("**");
**** **
** *** *
** ** **
** ** **
** ** **

2. Variables, Tipus i Assignació

Comprendre com es declaren les variables, com s'assignen valors i les regles de nomenclatura.

Donada la següent declaració d'una variable:

String speed = "high";

Quin és el nom de la variable?

speed
"high"
high
String

Donat el següent codi:

int a = 10; int b = 12; int c = b; int d = a; int e = c;

Introdueix el valor de la variable e.

12

Escriu el valor de cada variable, després de que s'executi cada sentència d'aquest programa:

a b c
int a = 0;
0
int b = 0;
0
0
a = 2;
2
0
int c = b;
2
0
0

Quin és el valor d'aquesta variable?

String animal = "tigre";
"animal"
"String"
animal
tigre

L'operador d'assignació en Java és:

<-
=
:=
->

Selecciona les afirmacions correctes sobre les variables.

Una variable té un tipus específic
El tipus determina el nom d'una variable
No es pot assignar un valor a una variable
Es pot llegir el valor d'una variable

Quantes variables s'han declarat al següent codi?

int i = 0, j = 0, k = 0; String s = "s", str = "str";
5

Selecciona les declaracions vàlides

float aFloat = "23.75f";
String mFloat = "98.7";
int cFloat = 44.3;
String kFloat = float;
char dFloat = '.';
String tFloat = "float";

El següent codi:

boolean turnedOn = true; turnedOn = false; String turnedOff = turnedOn; IO.println(turnedOff);
Imprimeix false
Imprimeix true
S'executa però dona un error
No es pot executar

Vols declarar una variable anomenada int.

Determina si el nom es vàlid o no (i per què?). Un nom és valid si el programa funcionarà.

Es nom és vàlid
El nom no és vàlid perquè no té sentit (què és int?)
El nom no és vàlid perquè comença per una lletra
El nom no és vàlid perquè és una paraula-clau

Selecciona els noms de variable vàlids, és a dir, que el programa funcionarà.

1poma
numero1
boolean
_var

Recordes les convencions per anomenar variables? Fes que la variable ALTURA@CACTUS no solament sigui sintàcticament correcta, sinò que també compleixi les recomanacions.

alturaCactus

Quin és el millor nom per una variable d'acord amb les convencions?

_uha
userHomeAdress
userhomeaddress
user_home_address
UserHomeAddress

3. Operadors i Expressions

Operacions aritmètiques, precedència, divisió entera, mòdul, increments i lògica booleana.

Escriu el resultat d'aquesta operació:

2 + 3 * 4 + 5

19

Què imprimirà aquesta sentència?

IO.println(2 + (-3) + 5 + (-8));
-4

Ordena els operadors segons la preferència

1
( )
2
* / %
3
+ -

Escriu el valor que retorna aquesta expressió:

(-5) * (-10) * (-20)

-1000

Quina de les següents expressions és igual a 12?

24 / 2
24 % 2
25 / 2
12 % 13

Quin és el resultat d'aquesta expressió?

3 / 2f

1.5

Què imprimeixen aquestes sentències?

IO.println((5 / 2) * (5 / 2));
4

IO.println((5 / 2) * (5f / 2));
5.0

Què imprimiran les següents sentències?

IO.println("Hola " + "mon");
Hola mon

IO.println("Hola " + 330);
Hola 330

IO.println("Hola " + 'm' + 'o' + 'n');
Hola mon

IO.println("Hola " + ('m' + 'o' + 'n'));
Hola 330

IO.println('m' + 'o' + 'n' + "Hola");
330Hola

Introdueix el valor de la variable result

int a = 4, b = 6; int c = a + b; int result = c + (a + b) * c;
110

Introdueix el valor de cada variable, després de cada sentència d'aquest programa:

ab
int a = 0;
0
int b = a + 1;
0
1
a = a + 1;
1
1
b *= 2;
1
2
a++;
2
2

Introdueix el valor de cada variable, després de cada sentència d'aquest programa:

ab
int a = 10;
10
int b = a + 10;
10
20
a += 10;
20
20
a += b;
40
20
a += a + b;
100
20
a += a + a;
300
20

Introdueix el valor de cada variable, després de cada sentència d'aquest programa:

xy
int x = 5;
5
int y = 2;
5
2
x += 3;
8
2
y *= x;
8
16
x++;
9
16
y -= x;
9
7

Escriu el resultat d'avaluar aquestes expressions lògiques:

!(true || false)

false

!true && !false

false

!(true && false)

true

true || true || !true

true

true && true && !true

false

Hi ha aquestes variables:

boolean b1 = true; boolean b2 = false; boolean b3 = true; boolean b4 = false;

Quin és el resultat d'aquesta expressió?

b1 && (b2 || (b3 || b4))
true

Selecciona les operacions que són invàlides en Java (produeixen un error de compilació perquè els tipus dels operands no són compatibles amb l'operador):

"Hola" - "Món"
"Java " + 26
!5
100 > 50
true + 1
8.5 * 2

Quin tipus de dada han de tenir obligatòriament els operands dels operadors lògics (&&, ||, !) en Java?

boolean (expressions o variables que valguin true o false)
int (on el 0 és fals i qualsevol altre enter és cert)
String (cadenes de text)
Qualsevol tipus numèric primitiu

Volem comprovar si el text guardat a la variable nom és igual a "Anna". Quina és la manera correcta de fer-ho en Java?

nom.equals("Anna")
nom = "Anna" (és una assignació de valor, no una comparació)
nom == "Anna" (no és segur: compara si apunten al mateix objecte en memòria, no el contingut del text)
nom === "Anna" (aquest operador no existeix en Java)

Què imprimeix aquest programa?

IO.println("java".equals('j' + 'a' + 'v' + 'a'));
true
false
És invàlid, perquè falta un parèntesi
És invàlid, perquè no es poden sumar caracters

Què imprimeix aquest programa?

int number = 1000; boolean result = number + 10 > number + 9; IO.println(result);
true

Emparella cada expressió amb el tipus de dada que retorna:

10 / 4
int (divisió entera)
10 / 4.0
double (divisió decimal)
10 >= 4
boolean (comparació)
"Preu: " + 10
String (concatenació)

Quin tipus de dada retorna l'avaluació final d'aquesta expressió combinada?

(15 + 5 > 10) && (20 / 2 == 10)
boolean (l'operació final és l'operador lògic &&)
int (perquè s'estan calculant nombres enters)
double (perquè hi ha una divisió)
String

Quin valor retorna aquesta expressió?

10 % 5 >= 2 || 10 / 5 <= 2 && !(10 - 5 != 2)
true
false

Quin valor contindrà la variable estat després d'executar aquest codi?

int edat = 17; String estat = edat >= 18 ? "Major d'edat" : "Menor d'edat";
"Menor d'edat"
"Major d'edat"
"17"
false

Quin valor tindrà la variable x?

int a = 10; int b = 30; int c = 20; String x = a < b ? "One" : b < c ? "Two" : "Three";
One
Two
Three

Quin valor s'assignarà a la variable missatge després d'avaluar aquesta expressió switch?

int codi = 2; String missatge = switch (codi) { case 1 -> "Enviant"; case 2 -> "Processant"; case 3 -> "Completat"; default -> "Error desconegut"; };
"Enviant"
"Processant"
"Completat"
"Error desconegut"

En una expressió switch de Java modern amb sintaxi de fletxa (->), com podem associar el mateix resultat a diversos valors (per exemple, els números 6 i 7 per al cap de setmana)?

Separant els valors amb comes en el mateix case: case 6, 7 -> "Cap de setmana";
Ometent la instrucció break entre casos com es feia en Java antic
Utilitzant l'operador lògic OR: case 6 || 7 -> "Cap de setmana";
No és possible, cal repetir el resultat per a cada cas independent

Què imprimeix exactament aquest fragment de codi?

int mes = 8; String estacio = switch (mes) { case 12, 1, 2 -> "Hivern"; case 3, 4, 5 -> "Primavera"; case 6, 7, 8 -> "Estiu"; case 9, 10, 11 -> "Tardor"; default -> "Desconegut"; }; IO.println(estacio);
Estiu

4. Conversió de Tipus (Càsting)

Conversions implícites i explícites entre tipus primitius.

Selecciona les línies on es requereix el casting explícit.

float a = 10; int b = a; char d = a; float c = b; int e = d; char f = c;
1
2
3
4
5
6

5. Exercicis Pràctics de Programació

Com demanar dades per teclat a l'usuari:

Recorda fer servir la instrucció IO.readln() de Java 26 per demanar dades per consola i convertir-les a números amb Integer.parseInt(...) o Double.parseDouble(...):

int valor = Integer.parseInt(IO.readln("Introdueix un enter: ")); double decimal = Double.parseDouble(IO.readln("Introdueix un decimal: "));

Exercicis Proposats

Crea un programa en Java 26 per a cadascun dels reptes següents. Estan ordenats de menor a major complexitat:

  1. Salutació personalitzada:

    Demana a l'usuari el seu nom i el seu primer cognom mitjançant dues preguntes independents amb IO.readln(). Mostra per pantalla una salutació completa unint els dos valors:

    Com et dius? Maria Quin és el teu primer cognom? Garcia Hola, Maria Garcia! Benvinguda al curs de programació en Java 26.
  2. Doble i triple d'un nombre:

    Demana un nombre enter a l'usuari amb IO.readln(), converteix-lo a número enter amb Integer.parseInt() i mostra per pantalla el seu doble (n * 2) i el seu triple (n * 3):

    Introdueix un nombre enter: 7 El doble de 7 és: 14 El triple de 7 és: 21
  3. Calculadora bàsica:

    Demana dos nombres enters a l'usuari (a i b). Calcula i mostra el resultat de la seva suma, resta, multiplicació, divisió entera i el residu de la divisió (mòdul %):

    Introdueix el primer enter: 17 Introdueix el segon enter: 5 Suma: 22 Resta: 12 Multiplicació: 85 Divisió entera: 3 Residu: 2
  4. Àrea i perímetre d'un rectangle:

    Demana la base i l'altura d'un rectangle com a nombres decimals (double). Calcula i mostra el perímetre (2 * base + 2 * altura) i l'àrea (base * altura):

    Introdueix la base: 4.5 Introdueix l'altura: 3.0 Perímetre: 15.0 Àrea: 13.5
  5. Conversor de graus Celsius a Fahrenheit:

    Demana una temperatura en graus Celsius com a valor decimal (double). Aplica la fórmula de conversió: F = C * 9.0 / 5.0 + 32. Atenció: Recorda utilitzar valors literals decimals com 9.0 / 5.0 per evitar que Java faci una divisió entera:

    Introdueix la temperatura en °C: 25.0 25.0 °C equivalen a 77.0 °F
  6. Càlcul de preu amb descompte i IVA:

    Demana el preu original d'un producte (decimal, en euros) i el percentatge de descompte a aplicar (enter, per exemple 15 per a un 15%). Calcula el preu després del descompte i, sobre aquest preu rebaixat, calcula i suma un 21% d'IVA per obtenir el preu final a pagar:

    Preu base (€): 100.0 Percentatge de descompte (%): 15 Preu rebaixat: 85.0 € IVA (21%): 17.85 € Preu final: 102.85 €
  7. Desglossament de temps (segons a minuts i segons):

    Demana una quantitat total de segons (enter). Mitjançant els operadors de divisió entera (/ 60) i residu (% 60), calcula quants minuts complets i quants segons restants representa:

    Introdueix els segons totals: 135 135 segons equivalen a: 2 minuts i 15 segons
  8. Mitjana de tres qualificacions i aprovat amb ternari:

    Demana les qualificacions de tres tasques (decimals entre 0 i 10). Calcula la nota mitjana aritmètica. Fent servir l'operador ternari (? :), determina si la qualificació és "Aprovat" (nota >= 5.0) o "Suspès" (nota < 5.0) i mostra el resultat per pantalla:

    Nota tasca 1: 6.5 Nota tasca 2: 4.0 Nota tasca 3: 7.5 Nota mitjana: 6.0 Qualificació final: Aprovat
  9. Descomposició de dígits d'un número de dues xifres:

    Demana un nombre enter positiu de dues xifres (entre 10 i 99). Sense utilitzar mètodes de cadenes de text, obtén la xifra de les desenes (utilitzant / 10) i la xifra de les unitats (utilitzant % 10). Mostra les dues xifres separades i la suma de tots dos dígits:

    Introdueix un nombre de dues xifres: 83 Xifra de les desenes: 8 Xifra de les unitats: 3 Suma dels dígits: 11
  10. Caixer automàtic (desglossament òptim de bitllets):

    Un caixer automàtic ha de lliurar una quantitat entera d'euros (múltiple de 10, com per exemple 280 €) utilitzant el menor nombre possible de bitllets de 50 €, 20 € i 10 €. Mitjançant divisions enteres successives (/) i càlculs de residu (%), calcula quants bitllets de cada valor cal lliurar:

    Introdueix la quantitat a retirar (múltiple de 10): 280 Desglossament de bitllets: - Bitllets de 50 €: 5 - Bitllets de 20 €: 1 - Bitllets de 10 €: 1
  11. Determinació de l'estació de l'any amb expressió switch:

    Demana a l'usuari un número de mes de l'any (enter de l'1 al 12). Utilitzant una expressió switch moderna amb casos agrupats per comes (case 12, 1, 2 -> ...), assigna a una variable el nom de l'estació climàtica corresponent (Hivern, Primavera, Estiu o Tardor). Si el número és fora d'aquest interval, la branca default ha de retornar "Mes no vàlid". Mostra el missatge final per consola:

    Introdueix el número de mes (1-12): 4 El mes 4 correspon a l'estació: Primavera
  12. Traductor de codis d'emoticones a emojis:

    A moltes plataformes de missatgeria com Discord o Slack, els usuaris escriuen codis de text com ara :lol:, :fire: o :heart: que el sistema tradueix automàticament a un emoji gràfic. A més, sovint diversos noms o àlies representen el mateix emoji (per exemple, tant :lol: com :risa: o :joy: poden traduir-se en 😁; o bé :cat: i :gat: en 🐱).

    Demana a l'usuari un codi d'emoticona per consola amb IO.readln(). Fes servir una expressió switch per obtenir l'emoji corresponent, permetent múltiples àlies per a un mateix emoji. Si l'usuari introdueix un codi no reconegut, retorna un indicador per defecte (com ❓). Mostra el resultat per pantalla:

    Introdueix un codi d'emoticona: :lol: Emoji: 😁
  13. Nombre de dies d'un mes:

    Els mesos del nostre calendari no tenen la mateixa durada: alguns en tenen 31, d'altres 30, i febrer en té 28 (sense considerar anys de traspàs).

    Demana a l'usuari el número d'un mes (de l'1 al 12, o el seu nom com a text). Fent servir una expressió switch que agrupi els mesos que comparteixen el mateix nombre de dies, determina quants dies té aquest mes i mostra'l per pantalla. Si s'introdueix un valor invàlid, indica-ho a la branca per defecte:

    Introdueix el número de mes (1-12): 4 Aquest mes té 30 dies.
  14. Calculadora interactiva amb operador:

    Demana dos nombres decimals a l'usuari (double) i tot seguit un símbol d'operació per teclat (+, - o *).

    Mitjançant una expressió switch que avaluï el símbol de l'operació, calcula el resultat de l'operació escollida i desa'l en una variable. Si l'usuari introdueix una operació desconeguda, gestiona l'error a la branca per defecte. Mostra l'operació sencera i el resultat obtingut per pantalla:

    Introdueix el primer número: 12.5 Introdueix el segon número: 4.0 Operació (+, -, *): * Resultat: 12.5 * 4.0 = 50.0