Materiály k semináři
Úkoly
Vyřešené úkoly budou zkontrolovány na semináří.
Vytvoř datový model a jednoduché operace nad „knihovnou filmů“.
Požadavky
- Vytvoř
enum Genre(např.action,drama,comedy,sciFi,horror). - Vytvoř
struct Movies poli:id: UUIDtitle: Stringyear: Intrating: Double(0.0–10.0)genre: Genre
- Vytvoř pole
var movies: [Movie]a naplň ho alespoň 8 filmy. - Napiš funkce (bez
map/filter, klidněfor-in):func movies(in genre: Genre, from movies: [Movie]) -> [Movie]func topRatedMovie(from movies: [Movie]) -> Movie?func averageRating(for genre: Genre, in movies: [Movie]) -> Double?func moviesReleased(from year: Int, to year: Int, in movies: [Movie]) -> [Movie]
Bonus
- Funkce
func groupByGenre(_ movies: [Movie]) -> [Genre: [Movie]](použijDictionary). - Ošetři neplatná data (rating mimo rozsah, rok < 1888, apod.).
Poznámka: Nejsou povoleny funkce map, filter,
reduce. Použij for-in a podmínky.
Naprogramuj jednoduchý systém skladu se skladovými položkami a operacemi příjmu/výdeje.
Požadavky
- Vytvoř
enum StockOperationType:inbound(příjem)outbound(výdej)
- Vytvoř
struct StockItem:sku: String(unikátní kód, např. „A123“)name: Stringquantity: Int
- Vytvoř
struct StockOperation:type: StockOperationTypesku: Stringamount: Intdate: Date
- Vytvoř
class Warehouses vlastnostmi:var items: [StockItem]var history: [StockOperation]
func addNewItem(_ item: StockItem)(nesmí vložit duplicitnísku)func apply(_ operation: StockOperation) -> Bool(vracítrue, pokud proběhla;falsepokud nešla provést)
- Pravidla pro
apply:amountmusí být > 0- inbound:
- když položka existuje, zvýší
quantity - když neexistuje, vytvoří novou položku (
quantity = amount)
- když položka existuje, zvýší
- outbound:
- položka musí existovat
- nesmí jít pod nulu (když by šla, operace se neprovede)
- Napiš funkce:
func item(with sku: String) -> StockItem?func totalQuantity() -> Intfunc lowStockItems(threshold: Int) -> [StockItem](např. <= 3)
Bonus
func mostMovedItem() -> StockItem?(podle součtu pohybů v historii)func printReport()(hezký výpis do konzole)
Poznámka: Nejsou povoleny funkce map, filter,
reduce. Použij for-in a podmínky.