Exercicis d'autoavaluació

Exercici 1

Completeu les frases següents:

NúmPreguntaResposta
1

Per llegir seqüencialment dades en format binari, s’usa la classe .

2

Per llegir seqüencialment dades en format text, s’usa la classe .

3

Per escriure dades en format text s’usa la classe .

4

Per inicialitzar les classes vinculades al tractament de fitxers s’usa la classe .

Exercici 2

Estudieu el programa següent:

  1. package unitat6.apartat2.activitats;
  2.  
  3. import java.io.File;
  4. import java.io.PrintStream;
  5. import java.io.RandomAccessFile;
  6.  
  7. public class FitxersMisteriosos {
  8.  
  9. public static void main (String[] args) {
  10. FitxersMisteriosos programa = new FitxersMisteriosos();
  11. programa.inici();
  12. }
  13.  
  14. public void inici() {
  15. File a = new File("Entrada");
  16. File b = new File("Sortida");
  17. long mida = a.length()/4;
  18. try {
  19. PrintStream ps = new PrintStream(b);
  20. for (int i = 0; i < mida; i++) {
  21. int v = raf.readInt();
  22. ps.print(v);
  23. if ((i > 0)&&(i%5 == 4)) {
  24. ps.print("\n");
  25. } else {
  26. ps.print(" ");
  27. }
  28. }
  29. } catch (Exception e) {
  30. System.out.println("Error en el processament: " + e);
  31. }
  32. }
  33. }

A partir del codi font del programa anterior, i sense executar-lo en el vostre entorn de treball, contesteu si les afirmacions següents són vertaderes (V) o falses (F).

NúmPreguntaVF
1

Es genera un fitxer orientat a byte.

2

Es modifica un fitxer orientat a byte.

3

Es genera un fitxer orientat a caràcter.

4

Si el fitxer “Sortida” ja existeix, se sobreescriu.

5

Si el fitxer “Entrada” no existeix, hi haurà una excepció.

6

Es realitza accés relatiu al fitxer “Entrada”.

7

S’usa una marca de fi per saber quants valors cal llegir.

8

El programa no està ben fet, falten instruccions.

9

El fitxer llegit pot contenir valors de diferents tipus de dades.

10

Al fitxer de sortida, s’escriuen cinc valors per cada línia de text.

Exercici 3

Estudieu el programa següent:

  1. package unitat6.apartat2.activitats;
  2.  
  3. import java.io.File;
  4. import java.io.RandomAccessFile;
  5.  
  6. public class MesFitxersMisteriosos {
  7.  
  8. public static void main (String[] args) {
  9. MesFitxersMisteriosos programa = new MesFitxersMisteriosos();
  10. programa.inici();
  11. }
  12.  
  13. public void inici() {
  14. File a = new File("Entrada");
  15. long mida = a.length()/8;
  16. try {
  17. long i = 0;
  18. //PUNT A
  19. while (i < mida) {
  20. double v = raf.readDouble();
  21. //PUNT B
  22. System.out.println(v);
  23. raf.skipBytes(8);
  24. i = i + 2;
  25. //PUNT C
  26. }
  27. i = 0;
  28. while (i < mida) {
  29. //PUNT D
  30. double v = raf.readDouble();
  31. //PUNT E
  32. System.out.println(v);
  33. raf.skipBytes(32);
  34. i = i + 5;
  35. }
  36. raf.close();
  37. } catch (Exception e) {
  38. System.out.println("Error en el processament: " + e);
  39. }
  40. }
  41. }

A partir del codi font del programa anterior, i sense executar-lo en el vostre entorn de treball, contesteu si les afirmacions següents són vertaderes (V) o falses (F).

NúmPreguntaVF
1

Aquest programa realitza accés relatiu a un fitxer.

2

En arribar al PUNT A, l’apuntador està a la posició 0 del fitxer.

3

Al primer bucle, en iniciar la iteració on i val 0, en arribar al PUNT B, l’apuntador està a la posició 8 del fitxer.

4

Al primer bucle, quan la i valgui 6 en arribar al PUNT C, l’apuntador està a la posició 48 del fitxer.

5

Al segon bucle, quan la i valgui 5 en arribar al PUNT D, l’apuntador està a la posició 40 del fitxer.

6

Al segon bucle, en iniciar la iteració on i val 10, en arribar al PUNT E, l’apuntador està a la posició 88 del fitxer.

7

Al segon bucle, al iniciar la iteració on i val 0, al arribar al PUNT E, l’apuntador està a la posició 160 del fitxer.

8

Aquest programa és incorrecte i provocarà una excepció.

Exercici 4

Es disposa d’un fitxer de text amb exactament aquest contingut (inclosos salts de línia i espais):

1 4 3,87      9
6 2,1 5 -5 3
12 -80      4,5 6,3

A partir del contingut del fitxer orientat a text tot just mostrat, contesteu si les afirmacions següents són vertaderes (V) o falses (F). En fer-ho, aneu amb molt de compte amb la manera com s’usen els literals per establir un tipus de dades o un altre.

NúmPreguntaVF
1

Si l’apuntador es troba sobre el 4, el mètode next() s’avalua a “3.87”.

2

Si l’apuntador es troba sobre el 9, el mètode nextLine() s’avalua a “9”.

3

Si l’apuntador es troba sobre el 2,1, el mètode hasNextInt() s’avalua a false.

4

Si l’apuntador es troba sobre el 4,5, el mètode nextLine() s’avalua a “4,5 6,3”.

5

Si l’apuntador es troba sobre el 12, el mètode nextInt() s’avalua a “12”.

6

Si l’apuntador es troba sobre el -80, el mètode nextLine() s’avalua a ”-80 4,5 6,3”.

7

Si l’apuntador es troba sobre el 3, el mètode nextInt() s’avalua a 3.

8

Si l’apuntador es troba sobre el 6, el mètode hasNextDouble() s’avalua a true.

9

Si l’apuntador es troba sobre el 6,3, el mètode nextDouble() s’avalua a 6.3.

10

Si l’apuntador es troba sobre el 5, el mètode next() s’avalua a 5.

Exercici 5

Suposeu que es disposa del fitxer següent orientat a byte anomenat “Short.bin”. Aquest conté 10 valors de tipus short consecutius. Recordeu que aquest tipus primitiu és per a valors enters que ocupen 2 bytes. Al fitxer es representa el valor de cada byte dins el fitxer individualment.

0x00 0x00 0x00 0x03 0x00 0x06 0x00 0x09 0x00 0x0C 
0x00 0x0F 0x00 0x12 0x00 0x15 0x00 0x18 0x00 0x1B

Ara estudieu aquest programa que fa operacions sobre ell:

  1. package unitat6.apartat2.activitats;
  2.  
  3. import java.io.File;
  4. import java.io.RandomAccessFile;
  5.  
  6. public class DadesBinariesMisterioses {
  7.  
  8. public static void main (String[] args) {
  9. DadesBinariesMisterioses programa = new DadesBinariesMisterioses();
  10. programa.inici();
  11. }
  12.  
  13. public void inici() {
  14. File a = new File("Fitxer.bin");
  15. try {
  16.  
  17. long mida = a.length()/2;
  18. for (int i = 0; i < mida; i++) {
  19. if (i%2 == 0) {
  20. short v = raf.readShort();
  21. raf.writeShort(2*v);
  22. }
  23. }
  24. //PUNT A
  25.  
  26. raf.seek(8);
  27. raf.writeByte(1);
  28. raf.writeByte(2);
  29. raf.writeByte(3);
  30. raf.writeByte(4);
  31. //PUNT B
  32.  
  33. while (raf.getFilePointer() < a.length()) {
  34. long aux = raf.getFilePointer();
  35. short v = raf.readShort();
  36. if (v > 20) {
  37. raf.seek(aux);
  38. raf.writeShort(1);
  39. } else {
  40. raf.skipBytes(2);
  41. }
  42. }
  43. //PUNT C
  44.  
  45. raf.seek(18);
  46. for (int i = 0; i < mida/2; i++) {
  47. raf.writeInt(i + 1);
  48. }
  49. //PUNT D
  50.  
  51. raf.close();
  52. System.out.println(a.length());
  53.  
  54. } catch(Exception e) {
  55. System.out.println("Error en tractar fitxer: " + e);
  56. }
  57. }
  58. }

Sense executar-lo en el vostre entorn de treball, contesteu si les afirmacions següents són vertaderes (V) o falses (F).

NúmPreguntaVF
1

En arribar a PUNT A, els 10 primers bytes valen: 0x00 0x00 0x00 0x00 0x00 0x06 0x00 0x0C 0x00 0x0C.

2

En arribar a PUNT B, els 10 primers bytes valen: 0x00 0x00 0x00 0x00 0x00 0x06 0x01 0x02 0x03 0x04.

3

En arribar a PUNT C, els 10 darrers bytes valen: 0x03 0x04 0x00 0x12 0x00 0x01 0x00 0x01 0x00 0x01.

4

En arribar a PUNT D, els 10 darrers bytes valen: 0x00 0x01 0x00 0x02 0x00 0x03 0x00 0x04 0x00 0x05.

5

El programa mostra per pantalla el valor “38”.

Anar a la pàgina anterior:
Activitats