← Tornar a l'índex d'exercicis

Exercicis i Qüestionaris U3: Arrays i Matrius

Autoavaluació interactiva d'U3: Arrays i Matrius

Els arrays són la primera estructura de dades que permet emmagatzemar múltiples elements consecutius a la memòria. Resol els qüestionaris per assegurar-te que entens com funcionen els índexs i les dimensions.

1. Qüestionari d'Arrays Unidimensionals

Índexs, accés a elements i comportament durant l'execució de bucles.

Si tenim aquest array:

int[] numbers = { 1, 2, 3, 5, 4, 6, 4 };

Emparella les següents operacions amb el seu resultat:

numbers[0]
1
numbers[6]
4
numbers.length
7
numbers[7]
OutOfBounds

Quin serà el valor de l'array numbers després d'executar aquest codi?

int[] numbers = new int[5]; numbers[3] = 79;
{ 0, 0, 79, 0, 0 }
{ 5, 5, 79, 5, 5 }
{ 0, 0, 0, 79, 0 }
Execpció OutOfBounds

Quin serà el valor de l'array dies després d'executar aquest codi?

String[] dies = new String[5]; dies[3] = "Dijous";
{ null, null, null, "Dijous", null }
{ "", "", "", "Dijous", ""}
{ null, null, "Dijous", null, null }
Execpció OutOfBounds

Escriu com podem accedir als elements indicats d'un array anomenat numbers.

Primernumbers[0]
Últim
numbers[numbers.length-1]
Penúltim
numbers[numbers.length-2]
Mita
numbers[numbers.length/2]

El següent programa:

  1. creem una variable i guardem un valor
  2. modifiquem el seu valor sumant-li 1,
  3. l'imprimim
int x = 5; x++; IO.println(x);

Com podem fer el mateix amb un array?

int numbers = [5]
int[] numbers = {5}
int numbers = []{5}
[]int numbers = 5
numbers++
numbers[0]++
numbers{5++}
numbers[5]++
IO.println(numbers[0])
IO.println(numbers[5])
IO.println(numbers{5})
IO.println(numbers)

2. Qüestionari de Matrius Bidimensionals (2D)

Definició de files i columnes i inicialització de matrius.

Per a definir una matriu d'enters de dues files i tres columnes, podem utilitzar

int[][] matriu = new matriu[2][3];
int[][] matriu = new int[2][3];
int[2][3] matriu = new int[3][2];
int[][] matriu = new matriu[2][3];

Indica si la forma d'inicialitzar aquesta matriu és correcta:

float[][] mat = new float[2][2]; mat[0] = new float[]{ 1.5f, 1.3f }; mat[1] = new float[]{ 2.3f, 2.7f };
Sí
No

5. Exercicis Pràctics d'Arrays i Matrius

Exercicis proposats

  1. Inventari

    Un videojoc té un inventari amb 5 objectes. Crea un array amb els següents objectes:

    String[] inventari = {"espasa", "escut", "poció", "arc", "clau"};

    Mostra per pantalla tots els objectes indicant el seu índex.

    [0] espasa [1] escut [2] poció [3] arc [4] clau
  2. Marcador

    Un jugador ha obtingut aquestes puntuacions en 5 partides:

    120 450 230 800 320

    Guarda-les en un array i mostra:

    • la puntuació de la primera partida
    • la puntuació de l'última partida
    • totes les puntuacions
    Primera partida: 120 Última partida: 320 Puntuacions: 120 450 230 800 320
  3. Canvi de dades

    Crea un array de 5 enters amb els valors:

    10 20 30 40 50

    Demana a l'usuari una posició i un nou valor. Modifica l'element d'aquella posició i mostra l'array complet.

    Array inicial: 10 20 30 40 50 Posició que vols modificar: 2 Nou valor: 99 Array modificat: 10 20 99 40 50
  4. Radar

    Un robot té 8 sensors de distància. Guarda en un array les distàncies detectades:

    15 23 8 42 17 31 5 28

    Recorre l'array i mostra únicament les distàncies inferiors a 10 metres.

    Objectes perillosos detectats: 8 5
  5. Vida del jugador

    Un jugador té 6 nivells de vida registrats durant una partida:

    100 85 72 60 42 15

    Mostra cada valor indicant el nivell de la partida. Si la vida és inferior a 20, mostra també PERILL.

    Nivell 1: 100 Nivell 2: 85 Nivell 3: 72 Nivell 4: 60 Nivell 5: 42 Nivell 6: 15 PERILL
  6. Filtre de puntuacions

    Demana 8 puntuacions a l'usuari i guarda-les en un array.

    Després recorre l'array i mostra només les puntuacions que siguen iguals o superiors a 500.

    Introdueix la puntuació 1: 340 Introdueix la puntuació 2: 720 Introdueix la puntuació 3: 510 ... Puntuacions que superen 500: 720 510 ...
  7. Array invertit

    Crea un array amb 7 números. Mostra primer els elements en l'ordre normal i després en ordre invers.

    Normal: 10 20 30 40 50 60 70 Invers: 70 60 50 40 30 20 10

    Important: no crees un segon array. Utilitza només l'array original.

  8. Escàner de mapa

    Un robot explora 10 posicions d'un mapa. En cada posició hi ha:

    • 0 → buit
    • 1 → obstacle

    Guarda el mapa en un array i mostra'l.

    Mapa: 0 0 1 0 0 1 1 0 0 1 Obstacles: Posició 2 Posició 5 Posició 6 Posició 9
  9. Mapa del joc

    Un videojoc utilitza una matriu de 4 files × 6 columnes.

    Cada posició conté:

    • 0 → terreny lliure
    • 1 → paret

    Inicialitza la matriu amb aquest mapa:

    0 0 0 1 1 0 0 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0

    Mostra el mapa utilitzant dos bucles for.

  10. Posició del tresor

    En una matriu de 5 × 5 hi ha un tresor representat pel valor 9.

    0 0 0 0 0 0 0 0 0 0 0 0 0 9 0 0 0 0 0 0 0 0 0 0 0

    Recorre la matriu i mostra les coordenades on està el tresor.

    Tresor trobat! Fila: 2 Columna: 3

    Recorda que les files i columnes comencen en 0.

  11. Tauler de llums

    Una nau espacial té un tauler de 5 × 5 llums.

    Cada posició conté:

    • 0 → llum apagada
    • 1 → llum encesa

    Mostra el tauler i compta quantes llums estan enceses.

    1 0 1 1 0 0 1 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 1 0 Llums enceses: 13
  12. Radar

    Un radar representa les distàncies detectades en una matriu de 4 × 4.

    Mostra només les posicions on la distància siga inferior a 20.

    12 45 31 18 52 17 80 44 25 33 9 61 14 72 38 16
    (0,0) → 12 (0,3) → 18 (1,1) → 17 (2,2) → 9 (3,0) → 14 (3,3) → 16
  13. Generador de tauler

    Demana a l'usuari el nombre de files i columnes i crea una matriu d'eixes dimensions.

    Ompli-la amb el número de la fila.

    Introduix el número de files: 4 Introduix el número de columnes: 6 0 0 0 0 0 0 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 3 3

    Després fes una segona versió que ompliga cada posició amb el número de la columna:

    0 1 2 3 4 5 0 1 2 3 4 5 0 1 2 3 4 5 0 1 2 3 4 5
  14. Línia de foc

    Crea una matriu de 7 × 7 que represente un tauler.

    Demana a l'usuari una fila i una columna. La posició indicada representa el centre d'una explosió.

    Mostra una X en la fila i columna indicades i . en la resta.

    Fila: 3 Columna: 4 ....... ....... ....... ....X.. ....... ....... .......

    Repte: modifica el programa perquè l'explosió ocupe tota la fila i tota la columna.

    ...X... ...X... ...X... XXXXXXX ...X... ...X... ...X...
  15. Dungeon

    Crea una matriu de 8 × 8 que represente una sala d'un videojoc.

    Cada posició pot contenir:

    • . → espai buit
    • # → paret
    • E → entrada
    • T → tresor
    • X → enemic

    Utilitza aquesta matriu:

    ######## #......# #.###..# #...#..# #...#T.# #..E#..# #......# ########

    Mostra la sala per pantalla.

    Després recorre tota la matriu i informa de la posició de:

    • l'entrada
    • el tresor
    • cada enemic
    Entrada: (5,3) Tresor: (4,5)

    Repte final: compta quantes parets hi ha a la sala.

  16. El número premiat

    En una rifa s'ha amagat un número premiat dins d'una matriu.

    Utilitza aquesta matriu:

    int[][] taulell = { {8, 3, 7, 1}, {4, 9, 2, 6}, {5, 0, 8, 3}, {7, 2, 4, 9} };

    El número premiat és el 8. int premiat = 8;

    Demana a l'usuari les coordenades d'una posició de la matriu:

    • fila
    • columna

    Comprova el número que hi ha en aquesta posició.

    Si coincideix amb el número premiat, dona-li la enhorabona:

    Tria la fila: 0 Tria la columna: 0 ¡Enhorabona! Has trobat el número premiat. Era el 🎱!

    Si no coincideix, mostra el número que hi havia en aquella posició i quin era el número premiat.

    Tria la fila: 2 Tria la columna: 0 No has encertat. En aquesta posició hi havia un 5. El número premiat era el 8.