Laboratorul 13 – Fluxuri I/O. Funcționale

Problema 1

Să se scrie un program pentru afișarea pe ecran a liniilor aflate pe poziții impare dintr-un fișier text. Fiecare linie va fi precedată de numărul ei și un spațiu.

În implementare, se va folosi un obiect de tip LineNumberReader.

Cerințe:

  • Tratați toate excepțiile care ar putea să apară exact acolo unde apar!
  • Atenție la închiderea fișierelor – să se facă chiar dacă apare excepție la citire!

Pentru validarea acestei cerințe, puteți folosi fișierul text test01.in pus la dispoziție în arhiva laboratorului.

Problema 2

Să se scrie un program care citește un text de la tastatură și îl salvează într-un fișier pe disc. Citirea se va face până la introducerea cuvântului exit.

În implementare se va utiliza metoda readLine() pentru un obiect de tip DataInputStream sau BufferedReader.

Tratați toate excepțiile care ar putea să apară!

Problema 3

Să se implementeze un program care citește din fișierul test02.in un text și determină numărul de cuvinte din text.

Pentru citire se vor utiliza un obiect de tip FileReader și unul de tip StreamTokenizer.

FileReader in = new FileReader(new File("test02.in"));
StreamTokenizer str = new StreamTokenizer(in);

Problema 4 – Funcționale

Realizați o arhitectură unificată, similară cu Collections, pentru manipularea listelor care să conțină:

  • Interfața Function, parametrizată corespunzător, care conține o metodă execute, având ca parametru un obiect de tip A și un rezultat de tip B, unde A și B sunt două tipuri formale;
  • Interfața Addition folosită pentru a calcula suma a două numere de tip T, unde T este un subtip al lui Number (aceasta va conține o metodă zero care va întoarce elementul neutru al operației de adunare și o metodă add, care primește două obiecte de tip T și returnează suma lor);
  • Doi algoritmi polimorfici: reverse care inversează elementele unei liste și sum care calculează suma elementelor din listă; acești algoritmi trebuie să poată fi folosiți pe implementări diferite de liste, deoarece le abordează la nivel de interfață;
  • O serie de metode care au un comportament similar cu funcționalele din paradigma funcțională.

Veți porni implementarea de la clasa ListUtil, pusă la dispoziție în arhiva laboratorului.

poo/laboratoare/13.txt · Last modified: 2026/01/12 08:46 by george.tudor1906
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0