Activitats
Compta paraules
L’objectiu d’aquesta activitat és aprendre a treballar amb cadenes de text llegides d’un fitxer orientat a caràcter.
Feu un programa anomenat ComptaParaulesFitxer
que llegeixi un fitxer orientat a caràcter on hi ha tot de frases escrites en línies diferents. Per indicar el final del fitxer, hi ha una frase o només posa “fi”. Aquest programa ha de mostrar per pantalla el nombre de paraules que té cada frase, sense comptar la de “fi”. Les contraccions (l’, d’, etc.) compten com a part de la paraula associada.
Per exemple, a partir d’aquest fitxer:
Hi havia una vegada... Perquè ho ha fet avui? No està malament Si tu ho dius hi aniré Doncs d'acord fi
La sortida per pantalla podria ser:
La línia 1 té 4 paraules. La línia 2 té 5 paraules. La línia 3 té 3 paraules. La línia 4 té 6 paraules. La línia 5 té 2 paraules.
La màquina d'escriure
L’objectiu d’aquesta activitat és veure com emmagatzemar dades llegides des del teclat en fitxers orientats a caràcter.
Feu un programa que funcioni com una màquina d’escriure. En iniciar la seva execució, ha de preguntar a l’usuari que escrigui, usant el teclat el nom d’un fitxer. Si aquest fitxer ja existeix, s’ha de demanar que posi un altre nom. Un cop s’ha escrit un nom correcte, el programa ha d’anar llegint tot el text que escrigui l’usuari i, cada cop que acaba d’introduir una línia, en prémer la tecla de retorn, desar-lo al fitxer. El programa acaba quan l’usuari escriu una línia de text en la qual només hi ha un punt (”.”). Aquest punt no s’escriu dins el fitxer resultant.
Histogrames
L’objectiu d’aquesta activitat és veure com desar en un fitxer orientat a caràcter el resultat de fer operacions complexes sobre unes dades llegides des d’un altre fitxer.
Genereu un programa que, en iniciar-se, pregunti el nom d’un fitxer a l’usuari. El programa ha de comprovar que existeix. Aquest fitxer ha de contenir una seqüència de valors reals, entre 0 i 10, que representen un seguit de notes d’estudiants d’una aula. Per indicar el final de la seqüència, s’usa el valor -1 com a marca de fi. Podeu generar-lo prèviament vosaltres mateixos amb un editor de text.
El programa ha de llegir el contingut del fitxer i generar-ne un de nou anomenat “Histograma-nom del fitxer llegit”. Per exemple, si el fitxer amb les notes es diu, “NotesReals.txt”, el fitxer resultat s’anomenarà “Histograma-NotesReals.txt”. El contingut d’aquest fitxer ha de ser un histograma de les notes, comptant que:
- Excel·lent = nota entre 10 i 9
- Notable = nota entre 9 i 6.5
- Aprovat = nota entre 6.5 i 5
- Suspès = nota inferior a 5
Per exemple, si el fitxer “NotesReals.txt” conté:
10 8,5 4,5 3,75 6 7,5 8 9 2,5 9 5 6,5 -1
El fitxer resultant “Histograma-NotesReals.txt” contindria el següent:
Histograma del fitxer NotesReals.txt ------------ Suspès :*** Aprovat :** Notable :**** Excel·lent:***
Cadenes de bytes
L’objectiu d’aquesta activitat és aprendre a tractar fitxers orientats a byte que contenen diferents tipus de dades.
1. Genereu un programa que, a partir d’una frase, la desi en un fitxer orientat a byte. Ara bé, si us fixeu en els continguts de la unitat, veureu que entre la llista de mètodes bàsics per escriure tipus de dades a un fitxer d’aquestes característiques no hi ha cap mètode que escrigui cadenes de text directament. Per tant, el que es farà és emmagatzemar cada paraula individualment com si fos una seqüència de bytes. Per cada paraula, cal escriure primer la seva mida en bytes, i llavors immediatament els bytes de què es composa. Per transformar una cadena de text a un array de bytes podeu usar el mètode getBytes() de la classe String
.
Per exemple, si es vol tractar la frase “Hi havia una vegada una cadena de text”, el fitxer contindria consecutivament els valors següents, tots ells en format binari (aquí s’escriuen com a text perquè us sigui possible entendre-ho).
2 Hi 5 havia 3 una 6 vegada 3 una 6 cadena 2 de 4 text
2. Un cop fet, genereu un programa que sigui capaç de llegir el fitxer resultant i mostri per pantalla només les paraules amb un text que ocupi més de 3 bytes. Per exemple, a partir de la frase anterior, el programa mostraria:
havia vegada cadena text
Per inicialitzar una cadena de text partint d’un array de bytes (en lloc d’un literal entre cometes dobles, com heu fet sempre fins ara) es pot usar un constructor especial d‘String
, d’acord a la sentència següent:
String text = new String(arrayBytes);
Copiar fitxers
L’objectiu d’aquesta activitat és aprendre a treballar amb dos fitxers orientats a byte alhora, l’un per llegir dades i l’altre per escriure’n.
Feu un programa anomenat CopiarFitxerBinari
que realitzi una còpia d’un fitxer orientat a byte. El programa primer ha de demanar a l’usuari que introdueixi pel teclat els noms dels fitxers origen i destinació. Un cop fet, ha d’assegurar-se que l’origen existeix i que el destí no (no es vol sobreescriure’l). Finalment, ha de crear un fitxer amb el nom de la destinació que contingui exactament les mateixes dades que el fitxer origen, siguin quines siguin aquestes dades o el seu tipus.
Un cop heu realitzat el programa i veieu que funciona correctament, reflexioneu sobre la qüestió següent: funcionarà correctament si el fitxer origen és orientat a caràcter? Proveu-ho.
Actualització de dades
L’objectiu d’aquesta activitat és veure com treballar amb documents orientats a byte, de manera que s’hi puguin modificar les dades contingudes.
Feu un programa que serveixi com a editor de fitxers orientats a byte que contingui només enters. Aquest s’ha de comportar de la manera següent. En iniciar la seva execució, ha de preguntar a l’usuari quin fitxer vol editar, de manera que aquest pugui escriure el nom usant el teclat. Llavors, ha de mostrar el contingut del fitxer per pantalla, distribuït en files de 10 valors. No cal que formateu la sortida en columnes ben proporcionades. Si el fitxer no existia, se’n crea un de nou i, en aquest cas, no apareix cap valor, ja que el fitxer és buit.
Tot just després dels valors, el programa espera que l’usuari escrigui una comanda, d’entre les següents:
- a valor: afegir aquest valor al final del fitxer.
- d posició: esborrar el valor que hi ha en aquesta posició, comptant que el primer valor es considera en la posició 0. Ara hi ha un valor menys al fitxer.
- x: el programa acaba.
Després d’executar cada comanda, menys la de sortir, es torna a mostrar el contingut del fitxer, de manera que es poden veure els canvis soferts.
Tot seguit es mostra un exemple de com podria ser l’execució del programa.
Escriu el nom del fitxer a editar: FitxerEnters.bin ------------- Comanda: hfdsgjf Comanda desconeguda. ------------- Comanda: a 3 3 ------------- Comanda: a 50 3 50 ------------- Comanda: a 40 3 50 40 ------------- Comanda: a 2 3 50 40 2 ------------- Comanda: d 1 3 40 2 ------------- Comanda: x