Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
pp:2025:scala:secret_tema2 [2025/04/09 20:53] razvang |
pp:2025:scala:secret_tema2 [2025/04/10 12:09] (current) tpruteanu |
||
|---|---|---|---|
| Line 105: | Line 105: | ||
| **1.5** Definiti operatia de sortare a liniilor din tabel dupa o anumita coloana. Functia are un parametru optional ce determina ordinea in care trebuiesc sortate. Mai mult despre parametrii optionali puteti gasi [[https://docs.scala-lang.org/tour/default-parameter-values.html | aici]]. | **1.5** Definiti operatia de sortare a liniilor din tabel dupa o anumita coloana. Functia are un parametru optional ce determina ordinea in care trebuiesc sortate. Mai mult despre parametrii optionali puteti gasi [[https://docs.scala-lang.org/tour/default-parameter-values.html | aici]]. | ||
| <code scala> | <code scala> | ||
| - | def sort(column: String, criterion: String = "Asc"): Table = ??? | + | def sort(column: String, ascending: Boolean = true): Table = ??? |
| </code> | </code> | ||
| Line 120: | Line 120: | ||
| **1.8** Definiti functia join, care primeste un alt tabel si o coloana specifica pentru fiecare tabel. Aceasta functie va combina tabelele folosind coloanele indicate, rezultand intr-un nou tabel. | **1.8** Definiti functia join, care primeste un alt tabel si o coloana specifica pentru fiecare tabel. Aceasta functie va combina tabelele folosind coloanele indicate, rezultand intr-un nou tabel. | ||
| * Cand valorile din coloanele folosite pentru combinatie sunt identice, se va retine o singura valoare din acele coloane. | * Cand valorile din coloanele folosite pentru combinatie sunt identice, se va retine o singura valoare din acele coloane. | ||
| - | * Daca valorile difera, ele vor fi unite intr-un singur camp, separandu-le prin semnul ";", urmand ordinea in care tabelele sunt enumerate in apelul functiei. | + | * Daca valorile difera, ele vor fi unite intr-un singur camp, separandu-le prin semnul ";". |
| * Se considera ca valorile de tip sir de caractere gol ("") sunt echivalente cu NULL, adica acestea nu vor fi incluse daca exista o valoare specifica intr-o alta tabela. | * Se considera ca valorile de tip sir de caractere gol ("") sunt echivalente cu NULL, adica acestea nu vor fi incluse daca exista o valoare specifica intr-o alta tabela. | ||
| * In situatiile in care o linie este prezenta in tabelul A dar nu are corespondent in tabelul B, se vor completa campurile corespunzatoare din tabelul B cu sirul vid "". | * In situatiile in care o linie este prezenta in tabelul A dar nu are corespondent in tabelul B, se vor completa campurile corespunzatoare din tabelul B cu sirul vid "". | ||
| Line 153: | Line 153: | ||
| <code scala> | <code scala> | ||
| - | def join(table2: String, c1: String, c2: String): Option[Table] = ??? | + | def join(other: Table)(col1: String, col2: String): Table = ??? |
| </code> | </code> | ||
| Line 218: | Line 218: | ||
| **2.2.** Pentru a simplifica definirea conditiilor de filtrare, vom defini cateva operatori in cadrul traitului `FilterCond` care sa ne permita sa scriem cod mai concis. | **2.2.** Pentru a simplifica definirea conditiilor de filtrare, vom defini cateva operatori in cadrul traitului `FilterCond` care sa ne permita sa scriem cod mai concis. | ||
| Vom folosi urmatorii operatori ce extind clasa FilterCond: | Vom folosi urmatorii operatori ce extind clasa FilterCond: | ||
| - | - === - pentru a verifica egalitatea a doua conditii de filtrare. | + | - == - pentru a verifica egalitatea a doua conditii de filtrare. |
| - && - pentru a face conjunctia a doua conditii de filtrare. | - && - pentru a face conjunctia a doua conditii de filtrare. | ||
| - || - pentru a face disjunctia a doua conditii de filtrare. | - || - pentru a face disjunctia a doua conditii de filtrare. | ||
| Line 277: | Line 277: | ||
| Daca unul dintre numele de tabele nu exista in baza de date, functia va intoarce None. | Daca unul dintre numele de tabele nu exista in baza de date, functia va intoarce None. | ||
| <code scala> | <code scala> | ||
| - | def selectTables(tableNames: List[String]): Option[Database] = ??? | + | def selectTables(tableNames: List[String]): Database = ??? |
| </code> | </code> | ||
| Line 369: | Line 369: | ||
| | Filter | operator == | 1.5 | | | Filter | operator == | 1.5 | | ||
| | Filter | operator && | 1.5 | | | Filter | operator && | 1.5 | | ||
| - | | Filter | operator \|\| | 1.5 | | + | | Filter | operator `|`| | 1.5 | |
| | Filter | operator ! | 1.5 | | | Filter | operator ! | 1.5 | | ||
| | **FILTER** | **TOTAL** | **30** | | | **FILTER** | **TOTAL** | **30** | | ||
| Line 378: | Line 378: | ||
| | Database | indexing | 3 | | | Database | indexing | 3 | | ||
| | **DATABASE** | **TOTAL** | **15** | | | **DATABASE** | **TOTAL** | **15** | | ||
| - | | Query | query1 | 3.33 | | + | | Query | query1 | 3 | |
| - | | Query | query2 | 3.33 | | + | | Query | query2 | 3 | |
| - | | Query | query3 | 3.33 | | + | | Query | query3 | 4 | |
| | **QUERY** | **TOTAL** | **10** | | | **QUERY** | **TOTAL** | **10** | | ||
| | ''TEMA 2'' | ''TOTAL'' | ''100'' | | | ''TEMA 2'' | ''TOTAL'' | ''100'' | | ||