Differences

This shows you the differences between two versions of the page.

Link to this comparison view

poo:laboratoare:14 [2019/01/14 11:51]
carmen.odubasteanu
poo:laboratoare:14 [2026/01/12 08:32] (current)
george.tudor1906
Line 1: Line 1:
-===== Laboratorul 14. ===== 
  
-==== Aplicatie Design Patterns ​====+===== Laboratorul 13 – Fluxuri I/O. Funcționale =====
  
-Scopul vostru este să dezvoltați o aplicație care ajută elevii din clasa a 3-a să rezolve expresii artimetice. Aplicația voastră va primi ca input un String ce conține o expresie și va arăta elevului pas cu pas cum se rezolvă expresia. ​ 
  
-Formatul expresiilor de input va fi**(operand operator operand)** unde operatorul poate fi ''​*,/,​-,​+''​ iar operanzii pot fi valori numerice sau alte expresii+{{:poo:​laboratoare:​arhiva_13.zip|Arhiva laborator}}
  
-Un posibl input poate fi ''​(2 + ( (9 / 3) * ( (5 * 2) - (6 * 1))))''​. ​ 
  
-Evolutia expresiei va fi: ''​(2 + (3 * (10 - 6))) -> (2 + (3 * 4)) -> (2 + 12) -> 14''​.+=== Problema 1 ===
  
-Această aplicație ​se va numi "​Arithmo"​Veti porni de la scheletul de baza atasat laboratorului si veti urmari indicatiile din breviarul din cadrul laboratorului:​+Să se scrie un program pentru afișarea pe ecran a liniilor aflate pe poziții impare 
 +dintr-un fișier textFiecare linie va fi precedată ​de numărul ei și un spațiu.
  
-{{:​poo:​laboratoare:​laborator12_schelet.zip|Schelet ​de laborator}}+Î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**.
 +
 +<code java>
 +FileReader in = new FileReader(new File("​test02.in"​));​
 +StreamTokenizer str = new StreamTokenizer(in);​
 +</​code>​
 +
 +=== 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.
 +
 +<​hidden>​
 <​HTML>​ <​HTML>​
-<iframe src="​https://​ocw.cs.pub.ro/​courses/​_media/​poo/​laboratoare/​lab12_var_final.pdf" width="​640" height="​720"></​iframe>​+  ​<iframe src="​https://​ocw.cs.pub.ro/​courses/​_media/​poo/​laboratoare/​laborator_13.pdf" width="​740" height="​720"></​iframe>​
 </​HTML>​ </​HTML>​
 +</​hidden>​
 +
  
poo/laboratoare/14.1547459499.txt.gz · Last modified: 2019/01/14 11:51 by carmen.odubasteanu
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