Ekonomický simulátor EcoS - programátorská dokumentace

Rozměr: px
Začít zobrazení ze stránky:

Download "Ekonomický simulátor EcoS - programátorská dokumentace"

Transkript

1 Ekonomický simulátor EcoS - programátorská dokumentace Obsah I. Úvod... 2 Popis programu Použité technologie II. Struktura programu... 3 Části programu... 3 Základní rozdělení... 3 Přehled zdrojových souborů... 4 Důležité třídy a funkce... 4 III. Ekonomický model Základní vlastnosti modelu...13 Volba volných a vázaných proměnných Výpočet ceny na trhu...14 Rozdělení komodit Krok simulace ve městě Meziměstský obchod a typy terénu Nákup podniků, plánování výroby IV. Algoritmy a postupy Události Generování mapy Inicializace simulace Vykreslování mapy Plánování výroby Určení velikosti zásilky Rozvoj města Watchery Ostatní sledované údaje Spokojenost obyvatel A Formáty používaných souborů... 30

2 I. Úvod Tento text má sloužit jako programátorská dokumentace k programu EcoS. Jeho úkolem není okomentovat každou funkci, třídu nebo metodu, ale poskytnout náhled, jak celá aplikace z programátorského hlediska funguje, umožnit čtenáři (i autorovi) se ve zdrojovém kódu orientovat a případně osvětlit nebo zdůvodnit použité algoritmy. Součástí této dokumentace je samozřejmě i přehled všech zdrojových souborů včetně stručného obsahu a výčet nejdůležitějších tříd spolu s popisem jejich nejdůležitějších metod. Jinak ale dokumentace nebude členěna do kapitol podle souborů nebo tříd, ale spíše podle logických souvislostí (tzn. např. část věnovaná generování mapy, část o kroku simulace apod.) Samostatnou přílohu tvoří popis formátu používaných souborů. Popis programu: EcoS je program, který má umožnit na vybrané mapě zjednodušeně, avšak názorně simulovat ekonomiku na úrovni několika měst (státu). Důraz je kladen především na srozumitelnost simulace a na velkou svobodu v nastavování parametrů simulace uživatel si může nejen v editoru map vytvořit své vlastní mapy, ale dokonce si i nadefinovat vlastní model obyvatelstva (jaké komodity se kde vyrábí, v jakém množství, které jsou považovány za základní a které za luxusní apod.) Použité technologie: Program je napsán v jazyce C++ s využitím STL a knihoven wxwidgets (verze 2.8). Při vývoji byl důležitý požadavek na přenositelnost aplikace aby byla spustitelná (zkompilovatelná) jak na počítačích s OS Windows tak pod Linuxem. Proto byly zvoleny knihovny wxwidgets, které umožňují psaní multiplatformních grafických aplikací. Existuje verze programu pro Windows XP a verze pro Windows 98. Zdrojové kódy jednotlivých verzí se liší jen minimálně a to hlavně v návrhu GUI (jiná velikost fontu, šířka ovládacích prvků apod.).

3 II. Struktura programu Části programu Celá aplikace se sestává ze čtyř víceméně samostatných částí: editor modelu komodit a obyvatelstva, editor map, simulace a hrx. Editor modelu umožňuje definovat model komodit (s čím se bude obchodovat, kde a jak se to bude vyrábět) a model obyvatelstva (rozdělení komodit na základní a luxusní apod.). Umožňuje ukládat model do textového souboru (formát je popsán v samostatné příloze) a takový soubor načítat. Editor mapy slouží pro vytváření nových map. Mapy mohou mít libovolné rozměry v rozmezí 10x10-45x30 čtverců (horní mez je dána velikostí minimapy). Lze měnit typ terénu (i pro víc čtverců mapy najednou), stavět nová města a cesty a upravovat detaily měst. Součástí je i generátor náhodných map. Režim simulace slouží k vizuální prezentaci běžící simulace. Umožňuje simulaci zastavit, spustit nebo zrychlit, zobrazovat detaily o městech - situace na místním trhu, stručná historie vývoje cen - dovoluje některé "božské" zásahy - měnit typ terénu takřka libovolného čtverce, přidávat/odebírat obyvatele nebo zboží na trh, rušit obchodní cesty nebo celá města. Obsahuje též možnost zobrazit celkovou statistiku mapy a možnost nastavit na libovolnou komoditu v libovolném městě watcher. V režimu hry je uživatel postavem do role obchodníka s cílem pokusit se vydělat co nejvíce peněz. Možnosti zasahovat do světa jsou v tomto režimu pochopitelně omezeny. Základní rozdělení Program vychází se standartního modelu aplikace wxwidgets, odděleny jsou samotná aplikace, rám (frame) graf. okna, panel graf. okna (resp. panely) a ostatní kód. Aplikaci představuje třída MyApp odvozená z wxapp. Rám okna aplikace tvoří instance třídy EcoSFrame a vnitřek okna (panel) buď EcoSPanel, SimPanel nebo EditorPanel (podle toho, zda je zapnutý editor modelu, editor map nebo zda běží simulace). Tyto třídy implementují pouze funkčnost, grafický layout a ovládací prvky obsahují už jejich předci deklarovaní v souboru EcoS_GUI.h. Schéma zachycuje následující obrázek: Třída EcoSFrame reprezentuje rám a horní menu programu, zbyývající čtyři vždy zastupují panel zobrazený při jednom ze čtyř možných režimů aplikace. Hlavní funkcí spouštěnou při startu aplikace je bool MyApp::OnInit() v souboru EcoS.cpp. Uvnitř té se inicializují některé proměnné třídy MyApp, vytvoří se instance rámu aplikace, ten se zobrazí a dál aplikace čeká ve smyčce na události.

4 Přehled zdrojových souborů Následuje stručný přehled všech zdrojových souborů včetně nejdůležitějšího obsahu. Popis nejdůležitějších funkcí a tříd můžete nalézt v části Důležité třídy a funkce. EcoS.h, EcoS.cpp - Obsahuje třídu MyApp, která představuje hlavní aplikaci (program) EcoSAbout.h, EcoSAbout.cpp - Implementuje About dialog EcoSFrame.h, EcoSFrame.cpp - Implementuje třídu EcoSFrame reprezentující rám okna aplikace (včetně horního menu) EcoSPanel.h, EcoSPanel.cpp - Obsahuje všechny hlavní panely (EcoSPanel pro editor komodit, EditPanel pro editor map, SimPanel pro prostředí simulace a GamePanel pro prostředí hry) stejně jako velkou většinu všech dialogů map.h, map.cpp - Implementuje třídu Mapa, která představuje mapu světa, spolu se souvisejícími funkcemi - např. funkce pro generování mapy nebo I/O funkce PPainters.h, PPainters.cpp - Obsahuje věci potřebné k vykreslování mapy. Třída DrawPanelPainter slouží pro vykreslování bitmap terénu na zvolený panel. Třída DrawPanelHandler, která je odvozená ze třídy wxevthandler, je v podstatě event handler, který slouží k posílání událostí myši a klávesnice vhodnému rodiči (panel editoru komodit, editoru map nebo prostředí simulace). simulation.h, simulation.cpp - Implementuje věci důležité pro samotný běh simulace. V první řadě jde o třídy Simulation, Game a Konstanty, která obsahuje konstanty uvedené v konfiguračním souboru EcoS.ini: např. cenu práce jednoho člověka za týden, rychlost simulace (v ms) apod. Dále obsahuje třídu Watcher a funkce pro inicializaci simulace (zejména se jedná o topologické setřídění komodit podle výrobních řetězců a určení teoretických nákladů na výrobu) a především také důležitou funkci Cena, která podle parametrů počítá ceny na místních trzích. Jsou tu také funkce pro ukládání a načítání hry. tridy.h, tridy.cpp - Definuje a iplementuje hlavní vnitřní datové struktury. Zejména se jedná o třídy Komodita, Jednotka, Zavod, Mesto a Obyvatelstvo a výčtový typ TEREN. Obahuje také další pomocné třídy a funkce pro kontrolu, otevírání a ukládání modelu obyvatelstva. EcoS_GUI.h, EcoS_GUI.cpp - Z velké části automaticky generovaný kód, který definuje grafické uživatelské prostředí. Důležité třídy a funkce: V této části jsou vypsány nejdůležitější třídy a funkce řazeny podle zdrojových souborů. U funkcí a metod je uveden pouze stručný popis jejich funkce, detailnější rozvedení (pokud je potřebné) je k nalezení ve třetí nebo čtvrté kapitole. Obsluhy událostí (např. void EcoSFrame::OnMapSave) nejsou většinou uvedeny. Jednak je jejich účel obvykle zřejmý z názvu, jednak je jim věnován samostatný odstavec ve 4. kapitole.

5 EcoS.h: enum STAV { MODEL, SIMUL, EDITOR, HRA}; 4 stavy, v jakém se aplikace může nacházet class MyApp : public wxapp jednou instanciovaná třída představující aplikaci virtual bool OnInit() funkce volaná při startu (jako main u C programu) int GetIDW() vrátí vhodné ID pro nový watcher Simulation* simulation ukazatel na probíhající simulaci Game* game ukazatel na hru Konstanty konstanty položka obsahující konstanty z.ini souboru STAV stav stav, ve kterém se aplikace aktuálně nachází EcoSFrame* e_frame ukazatel na hl. rám aplikace void NactiKonstanty(Konstanty& k) načte konstanty ze souboru EcoS.ini EcoSAbout.h: class EcoSAbout : public AboutDlg okno s About dialogem EcoSFrame.h: class EcoSFrame : public MainFrame rám okna aplikace EcoSFrame( wxwindow *parent = NULL, int id = -1 ); konstruktor, vytvoří všechny panely a 1 zobrazí void Vyhra() v režimu hry po dosažení cílové částky zobrazí dialog o výhře void DisableSimMenu() zneaktivní položky v submenu "Simulace" void DisableMapMenu() zneaktivní položky v submenu "Mapa" void DisableGameMenu() zneaktivní položky v submenu "Hra", s výjimkou položky "Načíst" void EnableGameMenu() zneaktivní položky v submenu "Simulace" std::vector<komodita>* komodity; ukazetel na vektor komodit (hl. panelu) std::vector<jednotka>* jednotky; ukazetel na vektor jednotek (hl. panelu) Obyvatelstvo* obyvatelstvo; ukazetel na obyvatelstvo (hl. Panelu) EcoSPanel* main_panel ukazatel na panel editoru komodit SimPanel* sim_panel ukazetel na panel simulace EditPanel* edit_panel ukazetel na panel editoru map GamePanel* game_panel ukazatel na panel hry MySMDlg* sm_dlg ukazatel na dialog "Statistika mapy" wxtimer m_timer časovač, stopky, které odměřují kroky simulace void OnPlayB(wxCommandEvent &event) spuštění simulace ( stopky se rozjedou ) void OnStopB(wxCommandEvent &event) zastavení simulace ( stopky se zastaví ) bool konec_hry proměnná udávající, zda je zobrazen dialog o výhře EcoSPanel.h: class Aktualizovatelne abs. předek pro dynamická (aktualizovaná) okna virtual void Aktualizovat()=0 abs. metoda pro aktualizování obsahu okna class EcoSPanel : public MainPanel panel editoru modelu komodit a obyvatelstva void ShowKomodity() vypíše informace o komoditách void ShowKomodity() vypíše informace o jednotkách void ShowObyvatelstvo() vypíše informace o modelu obyvatelstva std::vector<komodita> komodity; vektor komodit modelu std::vector<jednotka> jednotky; vektor ek. Jednotek modelu Obyvatelstvo obyvatelstvo; část modelu týkající se obyvatelstva void OnMM( wxcommandevent& event ) načte model z mapy v editoru map void OnEditK( wxcommandevent& event) editace vybrané komodity void ChangeK(int select=-1) změní vybranou komoditu nebo přidá novou OnEditVV( wxcommandevent& event ) otevře dialog editace vzorce pro rozvoj void DelKom_O(long ID, int zkama) smaže komoditu z vybrané části modelu obyvatelstva void AddKom_O(long ID, int kam) přidá komoditu do vybrané části modelu obyvatelstva void ShowDetailK( wxcommandevent& event ) vypíše datail vybrané komodity void ShowDetailJ( wxcommandevent& event ) vypíše datail vybrané jednotky void ShowVzorce(Jednotka& jedn) vypíše výrobní vzoerce vybrané jednotky void ShowObdelnikO(wxTextCtrl* m_tctrl, std::vector<long>* u_vektor) vypíše vybranou část modelu obyvatelstva bool GetIdJedn(long& ID) v parametru vrátí id vybrané komodity, vrátí TRUE v případě úspěchu

6 class SimPanel: public SimPanel2 panel prostředí simulace Mapa* mapa ukazatel na mapu simulace wxpoint offset souřadnice posunutí výřezu mapy wxtimer m_timer časovač sloužící pro automatický refresh DrawPanelPainter DPP položka, která se stará o vykreslení výřezu s mapou std::vector<mydmsim*> okna vektor (dynamických) oken s detaily měst std::vector<mydcdlg*> okna_cest vektor (dynamických) oken s detaily cest std::vector<myhdlg*> okna_hist vektor (dynamických) oken s historií měst std::vector<watcher> watchers vektor watcherů MyWDlg* watch_dlg okno watcherů bool SmazOkno(MyDMSim* okno) odstraní okno z vektoru,v případě úspěchu vrátí TRUE void AddOkno(MyDMSim* okno) přidá okno (resp. ukazatel) do vektrou AddWatcher(const Watcher& W) přidá nový watcher do seznamu void SmazWatcher(int idw) odstraní watcher s daným id void SmazVsechnyWatchery(Mesto* M) smaže watchery, které se týkaly města *M void AktualizujWatchery() natáhne nové informace pro watchery void SmazVsechnaOkna(Mesto* M) smaže a zavře všechna okna s detily, které ukazují na město *M bool JeZobrazeno(wxPoint PT) vrátí TRUE, pokud je čtverec PT v aktuálním výřezu void OnTimer(wxTimerEvent& event) refresh okna, zastaví časovač void OnStep( wxcommandevent& event) provede 1 krok simulace void Q(wxPaintEvent& event) obsluha události vykreslení wxpoint SpoctiCtverec(wxPoint souradnice) spočítá skutečné souřadnice čtverce na mapě void SmazCtverec(wxPoint bod) vymaže obsah (cestu nebo město) daného čtverce void ApplyFiltr() aplikuje filtr "pohledem 1 komodity" void FiltrMesto(Mesto& M, wxclientdc& dc, long vypíše údeje podle filtru vedle města M IDK) bool maz; udává, jestli je aktivován "mód mazání" bool ruka; udává, jestli je aktivován "mód výběru" TEREN teren aktuálně vybraný typ terénu wxpoint lastmouseposition čtverec výřezu, na kterém nastala posl. událost myši class GamePanel: public SimPanel2 panel prostředí hry Mapa* mapa ukazatel na mapu hry wxpoint offset souřadnice posunutí výřezu mapy wxtimer m_timer časovač sloužící pro automatický refresh DrawPanelPainter DPP položka, která se stará o vykreslení výřezu s mapou std::vector<mydmsim*> okna vektor (dynamických) oken s detaily měst std::vector<mydcdlg*> okna_obch vektor (dynamických) oken pro obchodování std::vector<myhdlg*> okna_hist vektor (dynamických) oken s historií měst std::vector<watcher> watchers vektor watcherů MyWDlg* watch_dlg okno watcherů aktualizuje obsah hl. panelu a otevřených dynamických void UpdatePanel(bool no_repaint=false) oken void PaintMM() vykreslení minimapy bool SmazOkno(MyDMSim* okno) odstraní okno z vektoru,v případě úspěchu vrátí TRUE void AddOkno(MyDMSim* okno) přidá okno (resp. ukazatel) do vektrou AddWatcher(const Watcher& W) přidá nový watcher do seznamu void SmazWatcher(int idw) odstraní watcher s daným id void SmazVsechnyWatchery(Mesto* M) smaže watchery, které se týkaly města *M void AktualizujWatchery() natáhne nové informace pro watchery void SmazVsechnaOkna(Mesto* M) smaže a zavře všechna okna s detily, které ukazují na město *M bool JeZobrazeno(wxPoint PT) vrátí TRUE, pokud je čtverec PT v aktuálním výřezu void OnTimer(wxTimerEvent& event) refresh okna, zastaví časovač void OnStep( wxcommandevent& event) provede 1 krok simulace void Q(wxPaintEvent& event) obsluha události vykreslení wxpoint SpoctiCtverec(wxPoint souradnice) spočítá skutečné souřadnice čtverce na mapě void SmazCtverec(wxPoint bod) vymaže obsah (cestu nebo město) daného čtverce void ApplyFiltr() aplikuje filtr "pohledem 1 komodity" void FiltrMesto(Mesto& M, wxclientdc& dc, long vypíše údeje podle filtru vedle města M IDK) class EditPanel: public EditPanel2 panel editoru map Mapa* mapa ukazatel na mapu simulace

7 wxpoint offset souřadnice posunutí výřezu mapy wxtimer m_timer časovač sloužící pro automatický refresh int rozmer strana čtverce editovaného území TEREN teren aktuálně vybraný typ terénu bool ruka udává, jestli je aktivován "mód výběru" bool cesta udává, jestli je aktivován "mód přidávání cesty" bool maz udává, jestli je aktivován "mód mazání" bool extra udává, jestli je aktivován "mód extra kvality" Cesta nova_cesta nově stavěná cesta double cena_cesty cena nové cesty wxpoint lastmouseposition čtverec výřezu, na kterém nastala posl. událost myši void NovaMapa(int sirka, int vyska) vytvoří novou mapu zadaných rozměrů void PaintMM() vykreslí minimapu void OnTimer(wxTimerEvent& event) refresh okna, zastaví časovač wxpoint SpoctiCtverec(wxPoint souradnice) spočítá skutečné souřadnice čtverce na mapě void OnMestoCh( wxcommandevent& event) vypíše detaily vybraného města void OnChM( wxcommandevent& event) provede změnu detailů vybraného města void VypisSousedy(const Mesto& M, vector<mesto>& mesta) vypíše všechny sousedy daného města void OnGenerate( wxcommandevent& event) generování náhodné mapy void OnEditM( wxcommandevent& event) zobrazí okno s detaily města void OnBil( wxcommandevent& event) zobrazí okno s celkovou bilancí mapy void P(wxPaintEvent& event) obsluha události vykreslení void Ovlivneno(vector<wxPoint>& ctverce, wxpoint bod) v parametru vrátí vektor ovlivněných čtverců (podle nastavených rozměrů 1x1-5x5) bool JeNaMape(wxPoint ctverec) vrátí TRUE, pokud jsou dané souřednice uvnitř mapy double SpoctiCenu(wxPoint p1, wxpoint p2) spočítá cenu přechodu mezi 2 sousedními čtverci class MyEVVDlg: public EVVDialog dialog editace vzorečku rozvoje class MyNMDlg: public NMDialog dialog zadávání rozměrů nové mapy class MyNGDlg: public NGDialog dialog zadávání parametrů při startu hry class MyNJDlg: public NJDialog dialog editace (resp. přidání nové) jednotky MyNJDlg(wxWindow* parent, std::vector<jednotka>* konstruktor, pokud se přidává nová jednotka _v_jedn) MyNJDlg(wxWindow* parent, std::vector<jednotka>* konstruktor v případě editace stávající jednotky _v_jedn, Jednotka* _J) class MyDMDlg: public DMDialog dialog detialu města (pro editor map) class MyDMSim: public DMDialogSim, dialog datailu města (pro prostředí simulace) public Aktualizovatelne class MyDMGame: public DMDialogGame, dialog detailu města (pro prostředí hry) public Aktualizovatelne class MyOGame: public ODialog, dialog pro obchodování public Aktualizovatelne void OnSell( wxcommandevent& event) obsluha prodávání hráče void OnBuy( wxcommandevent& event) obluha nakupování hráče void VypisPanely() vypsání tabulek s detaily o stranách transakce class MyKPDlg: public KPDialog, dialog přehledu karavan public Aktualizovatelne class MyKNDlg: public KNDialog, dialog koupě nové karavany public Aktualizovatelne class MyHDlg: public HDialog, dialog stručné historie města public Aktualizovatelne class MyBMDlg: public BMDialog dialog celkové bilance mapy class MySMDlg: public SMSialog dialog celkové statistiky mapy - pro simulaci class MySKDlg: public SKDialog, dialog "Statistiky komodit" public Aktualizovatelne class MyDialog4 : public wxdialog okno s výzvou pro uložení stávajícího modelu class MSDialog : public wxdialog okno se "Splnitelností" modelu class MyDCDlg: public DCDialog, dialog datailu cesty (pro prostředí simulace) public Aktualizovatelne class MyWDlg: public WDialog, okno s watchery public Aktualizovatelne class MyVyhraDlg: public VyhraDialog dialog zobrazující se při dosažení cílové částy class MyOBDlg: public OBDialog, dialog "Obchodní statistiky" pro režim hry public Aktualizovatelne

8 wxpoint SpoctiNovyOffset(wxPoint bod, int X, int Y) spočítá nový offset tak, aby byl daný čtverec co možná nejblíž prostředku výřezu (pozice [13,10] ) void PaintMiniM(Mapa* mapa, wxpanel* minimap, vykreslení minimapy na zadaný panel wxpoint offset); void FiltrMesto(Mesto& mesto, wxclientdc& dc, zobrazení filtru "1 komodity" na zadaný panel long IDK, wxpoint offset); map.h: enum SMER { NORTH, EAST, SOUTH, WEST} udává možné směry typedef std::vector<int> Cesta Cesta ~ seznam čtverců class Mapa mapa "světa" std::vector<mesto> mesta vektor měst na mapě std::vector<cesta> cesty vektor cest std::vector<int> extra vektor č. čtverců s extra kvalitou TEREN* data pole s typem terénu pro každý čtverec std::vector<komodita> komodity použité komodity std::vector<jednotka> jednotky použité jednotky void AlokujData(int pocet) vyhradí potřebnou paměť na terén void SmazCestu(int start, int cil) smaže cestu, která začíná a končí na těchto čtvercích void PridejCestu(const Cesta& C) přidá cestu do svého vektoru void InitTrhy() inicializuje trhy všech svých měst (na začátku simul.) bool DeleteXY(wxPoint PT) smaže město nebo cestu na čtverci PT bool DeleteMesto(wxPoint PT) smaže město na čtverci PT, vrátí TRUE, pokud tam nějaké město bylo bool DeleteCestu(wxPoint PT) smaže cestu na čtverci PT, vrátí TRUE, pokud tam nějaká cesta vedla void ZmenExtra(wxPoint PT) normálnímu čtverci dá extra kvalitu, extra kvalitní vrátí k normálu int GetX() const vrátí x-ový rozměr mapy int GetY() const vrátí y-ový rozměr mapy TEREN GetTeren(wxPoint pt) const vrátí typ terénu na daném čtverci int Naalokovano() const vrátí počet naalokovaných čtverců const std::vector<komodita>* GetPK() const vrátí (konstantní) ukazatel na vektor komodit const std::vector<jednotka>* GetPJ() const vrátí (konstantní) ukazatel na vektor jednotek const std::vector<mesto>* GetPM() const vrátí (konstantní) ukazatel na vektor měst const std::vector<cesta>* GetPC() const vrátí (konstantní) ukazatel na vektor cest void Step() provede krok simulace bool Sousedi(int poradi1, int poradi2) const vrátí TRUE, pokud jsou čtverce přímí sousedi TEREN GetTerenSoused(int poradi, SMER sm) vrátí typ terénu souseda v daném směru double CenaCesty(Mapa* M, Cesta& C) spočítá a vrátí cenu cesty C (v poh. bodech) void Generuj(Mapa* M, int hustota) vygeneruje mapu se zadanou četností vody void NactiMapu(wxTextInputStream& text, Mapa& M) načte mapu z uvedeného zdroje void UlozMapu(wxTextOutputStream& text, const uloží mapu do uvedeného zdroje Mapa& M) bool KontrolaMapy(Mapa& M) provede kontrolu mapy, TRUE pokud nenajde chybu bool MestoNaVode(Mapa& M) TRUE, poku nějaké město stojí na vodě bool CestaNaVode(Mapa& M) TRUE, pokud nějaká cesta vede po vodě bool ChybnaJednotka(Mapa& M) TRUE, pokud je chybná vazba jednotky na terén bool JeKolemVolno(Mapa* M, wxpoint kde) TRUE, pokud v okolí bodu kde není město bool JeExtra(const Mapa* M, wxpoint bod) TRUE, pokud je bod "extra kvalitní" bool JsouSousedi(wxPoint p1, wxpoint p2) zjistí, jestli jsou 2 čtverce sousedé bool JeNaMape(const Mapa* const M, wxpoint kde) vrátí TRUE, pokud je čtverec uvnitř mapy *M Mesto* FindMesto(std::vector<Mesto>& mest, vrátí ukazatel na město, které leží na zadaných int pozicex, int pozicey) souřadnicích, vrátí 0, pokud tam žádné město není unsigned int GetBitSousedy(const Mapa* M, int X, vrátí bitovou masku reprezentující typy terénů, které int Y, bool extra=false) jsou v přímém okolí k nalezení wxstring TerenToStr(TEREN T) převede typ terénu na string PPainters.h: class DrawPanelPainter bool loaded wxpoint focused wxpoint offset void PaintCestu(const Cesta& C, třída, která se stará o vykreslování mapy udává, zda se podařilo úspěšně načíst obrázky zvýrazněný čtverec mapy aktuální offset mapy vykreslí 1 cestu

9 wxbuffereddc& dc, int sirka) void PaintMesto(const Mesto& M, wxbuffereddc& dc) void Repaint(wxPoint off, Mapa* map=0, bool clear=false, bool jenmc=false) void RepaintRect(wxPoint off, wxrect region, Mapa* map=0) void PaintKaravany(wxPoint off, Mapa* map=0) void PaintBod(wxPoint kam, TEREN typ) void SetFocused(wxPoint ctverec) void Zvyrazni(wxPoint ctverec, wxbuffereddc& dc) void Znevyrazni() void NacistImg() void PripravitBitmapy() wxbitmap* NajdiBMP(TEREN T, unsigned int bit_smery); class DrawPanelHandler: public wxevthandler int FROM wxpanel* parent void OnLeave(wxMouseEvent& evt) void OnMouse(wxMouseEvent& evt) void OnMouseR(wxMouseEvent& evt) void OnDblClick(wxMouseEvent& evt) void OnMouseUp(wxMouseEvent& evt) void OnMotion(wxMouseEvent& evt) void OnKey(wxKeyEvent& evt) vykreslí 1 město překreslí celou mapu překreslí jen čtverce, které zasahují do regionu vykreslení karavan na zadaný bod nakreslí texturu terénu naství zvýraznění na daný čtverec nakreslí zvýraznění daného čtverce zruší zvýraznění načte obrázky z pevně daných rel. adres z načtených obrázků připraví bitmapy najde vhoudnou texturu pro čtverec vzhledem k typům terénu na okolních čtvercích třída, která se stará o správné předávání událostí, které souvisejí s vykreslováním identifikátor, který se nastaví každé události předávané dál rodič, kterému se budou upravené události předávat nastaví události identifikátor a pošle "rodičovi" nastaví události identifikátor a pošle "rodičovi" nastaví události identifikátor a pošle "rodičovi" nastaví události identifikátor a pošle "rodičovi" nastaví události identifikátor a pošle "rodičovi" nastaví události identifikátor a pošle "rodičovi" nastaví události identifikátor a pošle "rodičovi" simulation.h: enum TYPT { INIT, NAKUP, PRODEJ, NAKLAD_KARAVAN, typy transakcí, které lze provádět NAKLAD_SKLADU, NEW_KAR}; class Konstanty třída obsahující v sobě konstanty ze souboru EcoS.ini int PROCENTO_PRACUJICICH podíl práceschopných obyvatel int MAX_OBYVATEL horní limit na počet obyvatel int CENA_PRACE cena práce za 1 tyden int PRACE_NAVIC náklady na nadlimitní výrobu int SIM_STEP_MLS délka kroku simulace v ms int EXTRA_BONUS bonus za extra terén int GAME_STEP_MLS délka kroku hry v ms class Zbozi položka skladu nebo karavany wxstring jmenok jméno komodity long IDK id komodity int mnozstvi mnostvi zbozi int prumer prumerna cena za 1ks long cena_celkem celkova cena za vsechny ks dohormady void Prodej(int kolik) odebere zadané množství zboží void Pridej(int kolik, int cenaza1) přídá zadané množství s pr. cenou cenaza1 class Karavana karavana pro hráče int GetMnozstvi(long idk) vrátí množství komodity s id idk v karavaně void PridejZbozi(const Komodita& K, int kolik,přidá do karavany zboží int cenaza1) void OdeberZbozi(long idk, int kolik) odebere zboží z karavany void Step() krok karavany (pokud je na cestě) void NaplanujCestu(const Cesta& C, int kroku, naplánování cesty (čtverce, kde se bude objevovat) int m) wxstring jmeno jméno karavany wxpoint aktual_pt aktuální pozice karavany na mapě int dorazi za jak dlouho karavana dorazí do cíle int kapacita kapacita karavany int nalozeno objem naloženého zboží std::vector<zbozi> naklad náklad karavany

10 std::deque<wxpoint> plan_cesty plán cesty (čtverce, kde se bude objevovat) class Sklad sklad ve městě wxpoint kde souřednice města std::vector<zbozi> zbozi zboží na skladě void PridejZbozi(const Komodita&K, int kolik, přidá určené množství dané komodity int cenaza1) void OdeberZbozi(long idk, int kolik) odebere určené množství int GetMnozstvi(long idk) const vrátí množství komodity s id idk na skladě int GetCenuZa1(long idk) const vrátí cenu za 1ks komodity s id idk na skladě int GetMnozstviAll() const vrátí celkovou cenu komodity s id idk na skladě class StatistikaPenez (roční) statistika void Vynuluj() vynulování statistik long nakup abs. hodnota nákupů long prodej celkový zisk z prodeje long naklad_k abs. hodnota nákladů na karavany long naklad_s abs. hodnota nákladů na uskladnění zboží long new_k abs. hodnota nákladů na nákup karavan class Simulation třída představující celou simulaci Mapa* mapa mapa, na které simulace probíhá Obyvatelstvo obyvatelstvo model obyvatelstva, který simulace používá std::vector<komodita> naklady "konstanty" pro výpočet ceny zboží long tyden č. "logického" týdne long tydnu_vehre; č. týdne skutečně stráveného ve hře (simulaci) void InitNaklady() spočítá "konstanty", které se budou používat při výpočtu cen (teoretické výrobní náklady) void Step() provede krok simulace void Stop() zastaví simulaci void Play() nastaví příznak běhu simulace class Game: public Simulation třída reprezentující hru void Step() provede krok simulace a navíc odečte náklady long account stav v hráčově pokladnici long target cílová částka bool uz_vyhral TRUE, pokud hráč už jednou dosáhl cílové částky bool AddAcc(long sum, TYPT TT) změní účet o 'sum', TT udává typ transakce, vrátí TRUE, pokud nebude přkročen max. debet std::vector<karavana> karavany hráčovy karavany std::vector<sklad> sklady sklady ve městech wxstring jmeno_vybrane_kar jméno karavany, která je v game-panelu zvýrazněná StatistikaPenez stat_letos statistiké údaje za letošek class Watcher třída představující watcher na komoditu int IDW ID watcheru long IDK ID komodity int MX, int MY souřadnice města void Aktualizovat(int prodej, int nakup, dodá aktuální informace int mnozstvi, int produkce) int prod_ceny[13], int nak_ceny[13], pole sledovaných údajů int mnozstvi[13], int produkce[13] class KomTS pomocná třída pro "topologické setřídění" komodit void SeradKom(const std::vector<komodita>& kom, "topologicky" seřadí komodity tak, aby se na jeden vector<jednotka>& jed, vector<komodita>& ceny) průchod daly spočítat výrobní náklady void SpoctiNaklady(std::vector<Jednotka>& jed, pro (vhodně seřazené) komodity spočítá "výr. náklady" std::vector<komodita>& ceny) void NajdiProducenty(long IDP, vector<jednotka>& v posl. parametru vrátí jednotky produkující danou jed, vector<jednotka*>& prod) komoditu double NakladJ(Jednotka* jedn, vector<komodita>& spočítá teoretické náklady na výrobu v tété jednotce ceny) double NajdiCenu(long ID, std::vector<komodita>& vrátí cenu vybrané komodity ceny) double Cena(double mnozstvi, long IDK, na základě množství na trhu a spotřebě obyvatel spočítá double spotreba) střední cenu komodity void SaveGame(wxTextOutputStream& text) uložení hry void LoadGame(wxTextInputStream& text) načtení hry

11 tridy.h: class ChybnyFormat třída pro vyhazování vyjímek při I/O operacích class PolozkaHistorie třída pro "zapamatování si" množství a cen komodit typedef std::vector<polozkahistorie> historie historie komodit pro 1 den enum TEREN { nic=0, voda, louka, plan, les, možné typy terénu poust, kopce} class Komodita komodita, zboží long ID, wxstring jmeno, double spotreba parametry komodity class Obyvatelstvo třída reprezentující model obyvatelstva class PolozkaTrhu: public Komodita položka na místním trhu class VyrobniVzorec 1 vzorec, podle kterého mohou jednotky vyrábět class Jednotka ekonomická jednotka (elementární podnik) long ID_jedn, wxstring jmeno, long ID_produkt parametry jednotky VyrobniVzorec vzorecky[max_vzorcu] pole všech dostupných vzorců TEREN potr_teren vyžadovaný typ terénu class Zavod 1 závod ve městě (může se skládat z více jednotek) Jednotka typ typ závodu int pocet počet zákl. jednotek, z kterých je závod složen bool naplno[4] kdy během posl. 4 týdnů jel závod na plnou kapacitu class Soused soused města int mestox, int mestoy, int vzdalenost parametry souseda class Mesto 1 město std::vector<wxstring> zpravy zprávy o aktuálním dění ve městě std::vector<zavod> zavody seznam místních závodů std::vector<soused> sousedi seznam sousedů std::vector<polozkatrhu> trh místní trh std::vector<novezbozi> incoming pomocný vektor, obsahuje zboží, které má v budoucnu dorazit na místní trh historie history[max_history] historie komodit pár týdnů nazpátek int x, int y souřadnice města unsigned int bit_sous bitmaska udávající aktuální typy terénu v okolí void Step(unsigned int sous, unsigned int extra) aktualizuje bitmasky města a provede krok void AddInc(long id, int mnozstvi, unsigned přidá zboží do "fronty příchozího zboží" int deadline, wxpoint from, int delka_prod=1) void CountSpokojenost() přepočítá spokojenost ve městě void AddZbozi(long id, int mnozstvi) přidá (nebo odebere!) zadané množství daného typu zboží void InitTrh(const std::vector<komodita>& kom) nastaví náh. množství na trhu, vynuluje historii (mělo by se volat pouze 1x ) void UpdateCeny() přepočítá a upraví ceny všch komodit na trhu int CenaNaTrhu(long ID) const vrátí "střední cenu" vybrané komodity int CenaProdej(long ID) const vrátí prodejní cenu komodity na trhu int CenaNakup(long ID) const vrátí nákupní cenu komodity na trhu bool DostStavebnin() const vrátí TRUE, pokud je ve městě dlouhodobě dost stavebnin bool DostStavebninTed() const vrátí TRUE, pokud je ve městě okamžitý dostatek stavebnin long GetAktualProdukce(long ID) vrátí celkovou aktuální produkci dané komodity void UpdateInc() aktualizuje "frontu příchozích" - sníží "dobu čekání" void NakupZavody() provede krok závodů - nákup + plánování výroby void NakupLidi() provede nákup lidí void NakupKaravany() provede nákup "karavan" - pro meziměstský obchod void NaplanujVyrobu(Zavod& Z) naplánuje výrobu daného závodu (a plán provede) Soused* VyberSousedaPro(PolozkaTrhu& PT, vybere nejvhodnějšího souseda pro obchod s daným Mesto** M) zbožím void RecordHistory() zaznamená historii komodit pro tento týden void Rozvoj() zodpovídá zo rozvoj města void ZavriZavody() při nedostatku pracovníků vybere a zavře nějaký závod int PoziceToPoradi(int x, int y, int m) převede souřadnice na číslo čtverce (m=šířka mapy) void SpoctiBilanci(vector<Mesto>& mesta, const spočítá bilanci všech měst dohromady vector<komodita>* kom, vector<komodita>& vyroba, vector<komodita>& spotreba) void NactiModelK(wxTextInputStream& text, načte model komodit (a obyvetelstva )

12 vector<komodita>& kom, vector<jednotka>& jedn, Obyvatelstvo& obyv) void UlozModelK(wxTextOutputStream& text, const uloží model komodit ( a obyvetelstva ) vector<komodita>& kom, const vector<jednotka>& jedn, const Obyvatelstvo& ob) bool NajdiJ(long id, const std::vector<jednotka>& do posl. parametru uloží jednotku s hledaným id, jedn, Jednotka* J) vrátí TRUE, pokud taková existuje bool KontrolaModelu(const vector<komodita>* kom, provede kontrolu modelu (jednoznačná ID apod.) const vector<jednotka>* jedn) bool KontrolaMest(const std::vector<mesto>* mes, provede kontrolu seznamu měst const vector<jednotka>* jedn, int n, int m) bool JeT_v_bitmasce(TEREN T,unsigned int bitmaska) vrátí TRUE pokud bitmaska indikuje přítomnost typu T

13 III. Ekonomický model Tato kapitola se věnuje ekonomickému modelu, podle kterého simulace funguje. Tanto model si neklade za cíl přesně realisticky emulovat ekonomiku, ale přiblížit se skutečnému chování ve srozumitlené podobě. Při stanovování modelu hrála roli zejména tato kritéria: věrnost (použitý model a algoritmy by měly věrně napodobovat realitu), srozumitelnost (aby uživatel věděl, co a proč se kde děje) a v neposlední řadě výpočetní složitost (aby simulace mohla běžet dostatečně rychle). Základní vlastnosti modelu Ekonomický model upravuje fungování celé simulace. Zde je výčet jeho základních vlastností: - mapa (svět) = neorientovaný graf, kde vrcholy představují města a hrany obchodní cesty - obchodní cesty mohou vést pouze po souši - 1 krok simulace odpovídá 1 týdnu - střídání ročních období se nebere v úvahu - je dán seznam komodit, se kterými se obchoduje; komodity mají určený parametr, který udává spotřebu na 100 obyvatel - komodity se dělí na základní a luxusní (základní jsou více potřebné, lidé se bez nich neobejdou) - některé komodity jsou označeny jako potraviny - ty jsou potřeba pro růst populace, pokud jich je dlouhodobý nedostatek, může vypuknout hladomor - některé komodity jsou označeny jako stavebniny - ty jsou potřeba při rozvoji města (nové podniky a nová obydlí) - je dán seznam ekonomických jednotek (elementárních podniků); ty mají určeno který produkt vyrábí, kolik potřebuje pracovníků, jaký typ terénu vyžaduje, délku produkce a seznam výrobních vzorců (nejvýše 4) - v každém městě funguje místní trh: pro každou komoditu jsou uvedeny prodejní a nákupní ceny - ekonomické jednotky stejného typu jsou v jednom městě sloučeny v jeden podnik - podnik má pevný počet zaměstnanců daný počtem ek. jednotek, tito lidé nemohou pracovat nikde jinde, ani v případě, že daný podnik aktuálně nevyužívá plnou výrobní kapacitu (dělníci nejsou na práci přidělováni podle aktuální potřeby) - podniky nakupují pouze na místním trhu a dodávají pouze na místní trh (výrobu tedy plánují pouze na základě situace na místním trhu) - podniky se snaží naplánovat výrobu tak, aby přinesla maximální zisk - výrobní kapacita je dána výrobními vzorci a počtem elementárních jednotek, ze kterých se podnik skládá - podnik může krátkodobě vyrábět přes svoji normální kapacitu - a to až o 20% - to ale za cenu zvýšených nákladů (dělníkům je třeba zaplatit za práci přesčas) - některé podniky mohou požadovat specifický typ terénu (např. rybář potřebuje vodu), pokud se takový v bezprostředním okolí (4 sousední čtverce) nevyskytuje, podnik nemůže vyrábět - některé čtverce na mapě mohou být extra kvalitní - takové potom dávají podnikům sousedních měst bonus na produkci - meziměstký obchod probíhá pouze po existujících cestách - města obchodují pouze se svými sousedy - v každém městě pro každou komoditu existuje imaginární obchodník, který rozhoduje, do kterého města (pokud vůbec) bude daná komodita exportována - "obchodník" má plnou informaci - tzn. že má informaci o aktuálních cenách na všech trzích - pro 1 komoditu může být v 1 kroku simulace z 1 města vypravena maximálně 1 karavana

14 - možné obchodní cesty jsou poměřovány z hlediska výnosnosti (zisk / týden) - ve městě žije určitý počet obyvatel (defaultní horní limit 4000), 25% z nich je práceschopných (toto číslo lze upravit v konfiguračním souboru EcoS.ini) - každé město má ubytovací kapacitu, která udává maximální snesitelný počet obyvatel, přičemž normální počet obyvatel do 92% využití kapacity, vyšší procento znamená přelidnění a nespokojenost obyvatel - každé město má dále ukazatel spokojenosti obyvatel - ta je ovlivněna dostupností zboží, výší nezaměstnanosti, dostatkem potravin a do určité míry využitím ubytovacích kapacit - počet obyvatel roste: pokud je ve městě za poslední 4 týdny dostatek nadpoloviční většiny potravin a je volná ubytovací kapacita - i ubytovací kapacita může růst: pokud je ve městě dost lidí a je dostatek stavebnin - pokud je spokojenost obyvatel vysoká, zvýší se produktivita práce Většina vlastností ekonomického modelu je neměnná, přímo daná zdrojovým kódem. Pouze některé konstanty jdou měnit přepsáním konfiguračního souboru EcoS.ini. Jejich výčet můžete nelézt v příloze A. Volba volných a vázaných proměnných Podle základní mikroekonomické teorie existují tyto základní tržní kategorie: nabídka, poptávka, cena a konkurence. Pokud jde o konkurenci, tu použitý model pro jednoduchost zanedbává (všechny elementární ek. jednoty stejného typu jsou ve městě sloučeny v jeden podnik). Zbylé tři faktory jsou velmi úzce propojené, neexistuje jednoznačná odpověď na otázku, který z nich je primární. Pro potřeby "zjednodušené" počítačové simulace je ale nanejvýš vhodné určit, která "proměnná" je volná a které jsou odvozené (a explicitně uvést jak). Použitý model bere jako základní nabídku a poptávku, z nich se odvozuje cena. Přesněji řečeno: množství zboží na trhu (které je v daný okamžik známé) a spotřeba obyvatel (která je pro každý druh zboží uvedena jako konstanta - parametr komodity) určuje cenu. Model ovšem reflektuje i zpětný vztah, kdy cena ovlivňuje nabídku a poptávku. Tzv. zákon rostoucí nabídky říká, že růst ceny vyvolá růst nabízeného množství - toho je tu docíleno pomocí algoritmů, kterými podniky plánují svou výrobu. Při vysoké ceně se jim vyplatí více vyrábět a tedy množství zboží na trhu poroste (tím dojde k nasycení trhu, cena poklesne a v důsledku toho zas poklesne i výroba). Na druhou stranu s rostoucí cenou poptávané množství klesá (zákon klesající poptávky). Toho je docíleno tak, že při malém množství zboží na trhu (a tudíž vysoké ceně) obyvatelé nekoupí tolik zboží, kolik by koupili při ceně obvyklé (tento vliv je o něco patrnější u luxusních komodit - viz níže). Výpočet ceny na trhu Jak bylo řečeno, cena je určena množstvím zboží na trhu a spotřebou obyvatel. Standartní ekonomická teorie ovšem žádnou jednoduchou funkci, explicitní vzorec pro takový výpočet neposkytuje. Maximálně přibližnou křivku, která takový vztah vyjadřuje:

15 Funkce pro výpočet ceny měla splňovat několik požadavků: - být klesající (nižší cena při dostatku zboží) - být ryze konvexní - být zdola omezená kladnou konstantou (ani při velkém přebytku se zboží neprodává zadarmo) - malá výpočetní složitost (jedná se o nejpoužívanější funkci v celé simulaci) - měla by být určena ne absolutním množstvím na trhu, ale relativním (tzn. podílem absolutního množství a spotřeby obyvatel) - být rozumně definována v 0 (může se stát, že na trhu nic nebude) Pokud jde o omezující konstantu (označme ji třeba C), ta je určena při inicializaci simulace a vyjadřuje teoretické výrobní náklady (cenu práce + cenu za suroviny). Pod tuto teoretickou hranici cena na místním trhu nikdy neklesne. Nejjednodušší funkce, která se nabízela, typu C + C * spotreba / mnozstvi bohužel není definována v nule. Bylo nutno najít jinou funkci než lomenou. Požadované vlastnosti má funkce exponenciální s parametrem x z int. (0,1). Tedy C + C * konstanta * (x) mnozstvi / spotreba V exponentu je mnozstvi / spotreba právě aby funkce byla klesající. Parametry byly následně určeny tak, aby funkce neklesala "příliš prudce" a aby cena při obvyklém množství (cca dvojnásobek spotřeby obyvatel) byla zhruba na dvojnásobku "výrobních nákladů". Konečná formule tedy je: C + C * 4 * (1/2) mnozstvi / spotreba

16 Touto funkcí je určena "střední" cena na místním trhu. V rámci simulace ale existují na trhu ceny dvě: cena prodejní, za kterou se na trhu prodává (tzn. za kterou se dá zboží pořídit) a která je stanovana jako 1,05 * střední cena, a cena nákupní, za kterou se na trhu vykupuje (0,95 * střední cena). Rozdělení komodit Komodity jsou rozděleny na základní a luxusní. Jejich rozdíl je v tom, jak je lidé nakupují v případě jejich nedostatku. Obecně základní je takové zboží, které lidé nutně potřebují. Ve spotřebě takového zboží se omezí jen pokud je cena opravdu vysoká. Zato bez luxusního zboží se spíše obejdou. Přesněji u základních komodit obyvatelé nakupují normální množství, pokud jsou ve městě zásoby apoň na 1 týden, pokud je zboží méně, nakoupí pouze 1/3 obvyklého množství. U luxusních nakoupí polovinu obvyklého množství, pokud zásoby klesnou pod množství na 2 týdny. Pokud je tohoto zboží méně než na 1 týden, nakoupí pouze 1/4. Různý je taky dopad (ne)dostatku na spokojenost obyvatel (určený podílem počtu dostatkových a nedostatkových komodit): základní luxusní poměr dost. / nedost. vliv na spokojenost poměr dost. / nedost. vliv na spokojenost žádné nedostatkové +6 žádné nedostatkové >2 +3 z intervalu (3,4] +3 z intervalu [1-2] +1 z intervalu (2,3] +2 z intervalu [0,5;1) -1 z intervalu (1-2] 0 <0,5-2 z intervalu (0,5-1] -1 0,5-2 Krok simulace ve městě Simulace je diskrétní v čase - to znamená, že jde "po krocích", vždy se udělá 1 krok (několik operací, které mají pevně dané pořadí), potom aplikace na chvíli počká, potom provede další krok atd. Krok znamená. že se v každém městě provedou následující operace (v tomto pořadí): - nákup lidí... nejprve uspokojí své potřeby obyvatelé - nákup "obchodníků"... pro meziměstký obchod - příjem nového zboží... ať už z příchozích karavan nebo z místních podniků - nákup závodů... naplánování výroby (pokud nejsou uprostřed výrobního cyklu) - rozvoj města... zvýšení ubyt. kapacity nebo rozšíření nějakého podniku - výpočet spokojenosti Výpočet spokojenosti musí být samozřejmě poslední operací. Jinak by se mohlo například stát, že by spokojenost ve městě byla nízká, přičemž důvody mezitím pominuly. První zas musí být nákup lidí, aby uživatel viděl situaci ve městě těsně před efektem nákupu obyvatel (pokud je nedostatek, musí se to odrazit na jejich nákupu a spokojenosti - kdyby třeba příjem nového zboží předcházel nákupu lidí, mohlo by se stát, že uživatel uvidí, že je nedostatek potravin, jenže po příjmu nového zboží se potraviny na trhu objeví a z hlediska obyvatel jich bude dostatek - ale to by pro uživatele zůstalo skryto!) Nákup závodů a plánování výroby musí zase následovat až po příjmu nového zboží. Pokud by tomu bylo obráceně, podniky s jednotýdenním výrobním cyklem by vyráběly "okamžitě" (v jednom kroku naplánují a zadají výrobu a ve stejném kroku by se zboží objevilo na trhu)

17 Meziměstský obchod a typy terénu Obchod mezi městy probíhá pouze po uvedených cestách a pouze přímo mezi sousedy. Nestává se tak, že by se zboží z města A posílalo do města B přes město C. Vzdálenost mezi dvěma městy je dána typem terénu čtverců, přes které obchodní cesta prochází. Imaginární "karavna" má na 1 týden 10 pohybových bodů (PB). Náročnost různých typů terénu je vyjádřena počtem PB, který karavana na jeho překonání potřebuje. Počet PB na 1 čtverec daného typu je zachycen v následující tabulce: typ terénu voda PB N/A louka 1 pláň 2 les 5 poušť 6 kopce 8 Pokud cesta přes daný čtverec nevede přímo, ale šikmo, je potřeba 1,5-násobek PB. Počet týdnů, který karavana potřebuje na zdolání cesty s cenou x PB je potom roven horní celé části z x / 10 V každém městě pro každou komoditu funguje imaginární "obchodník", který má k dispozici 1 "karavanu" a rozhoduje, do kterého města se bude daná komodita vyvážet a v jakém množství. Obchodník nejprve porovná výnosnost všech obchodních cest, které z města vedou, z hlediska zisku za 1 ks zboží / 1 týden. (Pro každého souseda vypočítá rozdíl místní prodejní ceny a tamější nákupní ceny, který vydělí vzdáleností měst v týdnech). Vybere to nejvýhodnější sousední město (nejvýnosnější cestu). Teprve poté určí velikost zásilky. Protože "obchodník" chce maximalizovat svůj zisk, nakupuje na místním trhu tak dlouho, dokud je místní prodejní cena nižší než nákupní cena ve vybraném sousedním městě. (Pro jednoduchost se předpokládá, že cena, za kterou v cílovém městě zboží na trh dodá je pevná, všechno zboží - v libovolném množství - bude prodáno za tuto cenu. Naopak cena, za kterou nakupuje na místním trhu se dynamicky mění - čím více nakoupí, tím méně zboží na trhu zůstane a tím bude dražší - v určitém bodě pak cena na místním trhu dosáhne aktuální ceny na trhu cílovém a obchodníkovi se už nevyplatí nakoupit více zboží.) Pozn.: Při porovnávání obchodních cest se neberou v úvahu náklady na přepravu. I v případě, že by se tyto náklady uvažovaly, by se jejich závislost na množství přepravovaného zboží a na délce cesty nejspíš velmi podobala přímé úměře. Na výsledku porovnávání by to tedy příliš nezměnilo - bylo by to jako ode všech porovnávaných hodnot (zisk za 1 ks zboží / 1 týden) odečíst konstantu. Nákup podniků, plánování výroby Pokud podnik není uprostřed svého výrobního cyklu, může v určenou chvíli naplánovat svou výrobu. Pokud zrovna něco vyrábí, nemůže začít souběžně další výrobu, i kdyby měl dostatečnou volnou výrobní kapacitu. Každý podnik (resp. ekonomická jednotka) může mít až 4 výrobní vzorce, které určují suroviny a objem produkce. Podnik vyzkouší naplánovat výrobu podle každého svého výrobního vzorce a aplikuje ten plán, který přinese největší čistý zisk. Naplánování výroby podle 1 pevně zvoleného vzorce vlastně spočívá pouze ve stanovení počtu elementárních ek. jednotek, které se do výroby zapojí (tedy určit, na kolik procent své výrobní kapacity

18 podnik pojede). Podobně jako u nákupu "obchodníků" se předpokládá, že všechno vyrobené zboží bude na trh dodáno za jednu pevnou cenu (aktuální nákupní cena), zatímco cena případných surovin pro výrobu se dynamicky mění. Je tedy možné si předem vypočítat předpokládanou tržbu za 1 ek. jednotku zapojenou do výroby: Celkový zisk se potom dá určit takto: trzba = produkce * (nakupni_cena_na_trhu - cena_prace_za_1ks) zisk = trzba * zapojenych_jednotek - f 1 - f f n kde f 1,f 2,... -f n vyjadřují cenu za nákup potřebného množství surovin 1 - n. Přesně vyjádřeno je f i rovno určitému integrálu funkce určující cenu zboží na trhu, tedy kde C je konstanta používaná při výpočtu ceny (teoretická cena výroby), b aktuální množství zboží na trhu a a množství na trhu po odkoupení potřebného množství. Protože se ale jedná o kritický výpočet, na předním místě je rychlost výpočtu, není tento způsob výpočtu nákladů přiliš vhodný. Cena, za kterou podniky nakupují suroviny je proto stanovena jinak. Cena, za kterou podnik nakoupí (b-a) ks zboží při aktuálním množství b je určena takto: cena = ( cena_pri_b + cena_pri_a ) / 2 * (b-a) Pokud se jako nejvýhodnější ukáže využít výrobní kapacitu podniku 100%, je možné krátkodobě překročit tuto kapacitu a zvýšit produkci o dalších 20%. Za to je ale potřeba zaplatit zvýšenými náklady na lidskou práci (dělníkům je třeba zaplatit přesčas). Standartní zvýšení je 50% mzdy navíc (tento bonus lze měnit v konfiguračním souboru EcoS.ini). Pokud bude celkový zisk i přes zvýšené náklady vyšší než při 100% využití kapacity, bude se následující výrobní cyklus produkovat zboží navíc. Vlivy ovlivňující produktivitu Při plánování výroby podnik nebere v úvahu dva faktory, které mohou produkci ovlivnit. Na prvním místě je to spokojenost obyvatelstva. Spokojení dělníci mají vyšší produktivitu práce, nespokojení naopak nízkou. Pokud je spokojenost ve městě větší než 85%, produktivita stoupne o 5%, pokud je mezi 65% a 75%, pak produktivita klesne o 10%, pokud spokojenost klesne pod 65%, pak produktivita klesne o 20%. Druhým faktorem, který má vliv na objem produkce, jsou extra kvalitní čtverce na mapě. Takový čtverec dává všem podnikům, které daný typ terénu vyžadují, v sousedních městech bonus na výrobu (standartně 40%, toto číslo jde měnit v konfiguračním souboru EcoS.ini)

19 IV. Algoritmy a postupy Základní struktura programu byla představena už ve druhé kapitole. Tato kapitola se věnuje použitým algoritmům z programátorského pohledu. Nejsou zde přímo popisovány všechny funkce a proměnné, spíše jsou představeny důležité funkce a je předložen celkový náhled na řešení vybraných problémů. Události K ošetření událostí (klinutí na ovládací prvek, stisknutí klávesy apod.) je využit mechanismus statických tabulek událostí, který nabízí knihovny wxwidgets. Všechy třídy, které mají nějak reagovat na události mají tuto tabulku. Ta se deklaruje pomocí makra DECLARE_EVENT_TABLE() uvnitř deklarace třídy. Samotná tabulka, určující která událost má být ošetřena kterou funkcí, je v implementačním souboru (.cpp) uvedená a ukončená pomocí BEGIN_EVENT_TABLE... END_EVENT_TABLE. Řádky tabulky mapují pomocí dalších maker události na odpovídající členské funkce. Všechny funkce, které ošetřují události, mají stejnou formu - jejich návratovým typem je void, nejsou virtuální a mají jeden argument, který se mění podle typu události; například příkazy základních ovládacích prvků sdílejí třídu události wxcommandevent. Řádek tabulky může vypadat třeba takto: EVT_BUTTON(wxID_MM, EcoSPanel::OnMM) Tento řádek určuje, že pokud bude stisknuto tlačítko s identifikátorem "wxid_mm", má se spustit funkce EcoSPanel::OnMM(wxCommandEvent&). Mechanismus událostí je podrobněji popsán v kníze Cross- Platform GUI Programming with wxwidgets. Mechanismus ošetření většiny událostí je s využitím nástrojů wxwidgets poměrně jednoduchý. Výjimku tvoří panel pro výřez mapy v editoru map a v prostředí simulace a hry. Tento panel tvoří instance třídy wxpanel (wxpanel* Draw_panel1;), na který se vykreslují textury terénu. Je ovšem potřeba ošetřit události myši a klávesnice na tomto panelu. Prvním možným řešením by bylo odvodit ze třídy wxpanel třídu novou, nadefinovat v ní příslušné funkce, pomocí statické tabulky událostí namapovat události na funkce a tuto novou třídu pak použít. Na druhou stranu je výhodnější mít všechny související funkce "na jednom místě" - tedy ve třídě EditPanel nebo SimPanel - jednak protože některé akce na výřezu mapy mají stejný efekt jako stisknutí určitého tlačítka příslušného panelu a bylo by nešikovné ho implementovat dvakrát, jednak ošetření události z výřezu mapy obvykle ovlivní celé okno, ne jen samotný výřez. Menší problém je v tom, že tyto události (typu wxmouseevent a wxkeyevent) se narozdíl od wxcommandevent automaticky nepropagují do svých bazických tříd a rodičů. Řešením je odvodit novou třídu z wxeventhandler (konkrétně class DrawPanelHandler: public wxevthandler), která bude mít jediný účel, a to přeposlat zachycené události k ošetření rodičovskému panelu. Tuto třídu je třeba přidat do zásobníku "event handlerů" výřezu mapy pomocí Draw_panel1->PushEventHandler(new DrawPanelHandler(this,FROM_DRPANEL); uvnitř konstruktoru třídy EditPanel resp. SimPanel. FROM_DRPANEL je identifikátor, který je "přilepen" ke každé přeposílané události. Pomocí něj se zjišťuje, jestli je událost původní, nebo přeposlaná. Typická metoda třídy DrawPanelHandler pak vypadá následovně: void DrawPanelHandler::OnDblClick(wxMouseEvent& evt) { evt.setid(from); parent->geteventhandler()->processevent(evt); } objektu události je nastaveno nové Id a je poslán k ošetření rodiči. Ten ve funkci ošetřující daný typ

20 události obykle na začátku obsahuje podobnou podmínku: void EditPanel::OnMouse(wxMouseEvent& event) { if(event.getid()==from_drpanel) {... }... } právě aby se odlišily originální a přeposlané události. Generování mapy Editor map obsahuje i automatický generátor map. Vygenerování nové mapy se skládá z několika kroků: nejprve se vygeneruje terén (voda, louka atd.), potom se generují města a obchodní cesty a nakonec se generuje průmysl (ekonomické jednotky ve městech). Generování terénu Pro vygenerování terénu slouží funkce void Generuj(Mapa* M, int hustota) Parametr hustota může nabývat hodnot 0,1 nebo 2 a určuje podíl vody. Za základ byl vzat algoritmus popsaný na stránce : * Pick a random spot on the map (rx,ry) * Pick a random radius size (radius) * For each pixel on the map (x,y) * Apply the following equation ignoring negative values: height[rx][ry] += radius^2 + ((x-rx)^2 - (y-ry)^2) * Repeat about 1000 times Původně algoritmus generuje profil terénu (jeho výšku) - stačí ovšem nahrazovat intervaly výšky určeným typem terénu, takže např. čtverce s nejmenší výškou odpovídají vodě apod. Nicméně tento algoritmus se neukázal být úplně optimálním. Jednak má tendence vytvářet vrcholky při horním a dolním okraji mapy (to se spraví úpravou rovnice na height[rx][ry] += radius^2 + ((x-rx)^2 + (y-ry)^2)). Navíc nebere v vůbec úvahu velikost mapy - proto se v upravené verzi algoritmu neberou v úvahu všechny čtverce (v originálu pixely), ale pouze ty uvnitř náhodného poloměru. Poslední úprava spočívá v tom, že se negeneruje mapa o velikosti m x n, ale mapa o velikosti max_m x max_m, z které se použije pouze výřez. Důvodem je, že pro čtvercové mapy dává algoritmus "hezčí" mapy. Terén se tedy generuje následovně: - pomocí výše popsaného algoritmu se všem čtvercům spočítá jejich "výška" - "výška" je znormalizována na interval (0-1) - jsou vymezeny intervaly, které určují jaké hodnoty znamenají jaký typ terénu - základní intervaly jsou tanoveny takto: 0-0,22... poušť 0,22-0,3... kopce 0,3-0,4... les 0,4-0,5... pláň 0,5-0,65... louka 0, voda - tyto intervaly se mohou měnit (např. vlivem parametru určujícího podíl vody na mapě) - "vyhlazení" - aby na mapě nebyly osamocené ostrůvky uprostřed vody nebo naopak čtverce vody uprostřed souše

1 Uživatelská dokumentace

1 Uživatelská dokumentace 1 Uživatelská dokumentace Systém pro závodění aut řízených umělou inteligencí je zaměřen na závodění aut v prostředí internetu. Kromě toho umožňuje testovat jednotlivé řidiče bez nutnosti vytvářet závod

Více

Reliance 3 design OBSAH

Reliance 3 design OBSAH Reliance 3 design Obsah OBSAH 1. První kroky... 3 1.1 Úvod... 3 1.2 Založení nového projektu... 4 1.3 Tvorba projektu... 6 1.3.1 Správce stanic definice stanic, proměnných, stavových hlášení a komunikačních

Více

PROJEKT MINY - DOKUMENTACE

PROJEKT MINY - DOKUMENTACE OBJEKTOVÉ METODY A PŘÍSTUPY PROJEKT MINY - DOKUMENTACE VYPRACOVALI Eduard Kučera, Matěj Noha, František Volf I. Úvod Předmětem seminární práce je obdoba známé hry Miny. Smyslem této hry je dostat se z

Více

Úvodem... 9 Kapitola 1 Karetních

Úvodem... 9 Kapitola 1 Karetních Úvodem... 9 Základní znalosti o programovacích jazycích...10 Jazyk C# a platforma.net...10 Visual C# 2010 Express...11 Instalace platformy.net 4.0 a Visual C# 2010 Express...11 Zdrojový kód aplikací...12

Více

DSL manuál. Ing. Jan Hranáč. 27. října 2010. V této kapitole je stručný průvodce k tvorbě v systému DrdSim a (v

DSL manuál. Ing. Jan Hranáč. 27. října 2010. V této kapitole je stručný průvodce k tvorbě v systému DrdSim a (v DSL manuál Ing. Jan Hranáč 27. října 2010 V této kapitole je stručný průvodce k tvorbě v systému DrdSim a (v současné době krátký) seznam vestavěných funkcí systému. 1 Vytvoření nového dobrodružství Nejprve

Více

Hledání správné cesty

Hledání správné cesty Semestrální práce z předmětu A6M33AST Závěrečná zpráva Hledání správné cesty Nela Grimová, Lenka Houdková 2015/2016 1. Zadání Naším úkolem bylo vytvoření úlohy Hledání cesty, kterou by bylo možné použít

Více

Typy souborů ve STATISTICA. Tento článek poslouží jako přehled hlavních typů souborů v programu

Typy souborů ve STATISTICA. Tento článek poslouží jako přehled hlavních typů souborů v programu StatSoft Typy souborů ve STATISTICA Tento článek poslouží jako přehled hlavních typů souborů v programu STATISTICA, ukáže Vám jejich možnosti a tím Vám dovolí využívat program efektivněji. Jistě jste již

Více

SignEditor 1 - návod k použití

SignEditor 1 - návod k použití SignEditor 1 - návod k použití Tomáš Ryba tryba@kky.zcu.cz Zdeněk Krňoul zdkrnoul@kky.zcu.cz Jakub Kanis jkanis@kky.zcu.cz 27. března 2012 1 Vznik za podpory projektu Pojabr - Potlačení jazykové bariéry

Více

Semestrální práce 2 znakový strom

Semestrální práce 2 znakový strom Semestrální práce 2 znakový strom Ondřej Petržilka Datový model BlockFileRecord Bázová abstraktní třída pro záznam ukládaný do blokového souboru RhymeRecord Konkrétní třída záznamu ukládaného do blokového

Více

Úvod...1 Instalace...1 Popis funkcí...2 Hlavní obrazovka...2 Menu...3 Práce s aplikací - příklad...5

Úvod...1 Instalace...1 Popis funkcí...2 Hlavní obrazovka...2 Menu...3 Práce s aplikací - příklad...5 Rejstřík Úvod...1 Instalace...1 Popis funkcí...2 Hlavní obrazovka...2 Menu...3 Práce s aplikací - příklad...5 Úvod Správcovská aplikace slouží k vytvoření vstupního a zašifrovaného souboru pro odečtovou

Více

Metoda Monte Carlo a její aplikace v problematice oceňování technologií. Manuál k programu

Metoda Monte Carlo a její aplikace v problematice oceňování technologií. Manuál k programu Metoda Monte Carlo a její aplikace v problematice oceňování technologií Manuál k programu This software was created under the state subsidy of the Czech Republic within the research and development project

Více

TRŽNÍ HOSPODÁŘSTVÍ. stát

TRŽNÍ HOSPODÁŘSTVÍ. stát TRŽNÍ HOSPODÁŘSTVÍ Trh = místo, kde se střetává nabídka s poptávkou Tržní mechanismus = zajišťuje spojení výrobce a spotřebitele, má dvě strany: 1. nabídka, 2. poptávka. Znaky tržního mechanismu: - výrobky

Více

Možnosti tisku v MarushkaDesignu

Možnosti tisku v MarushkaDesignu 0 Možnosti tisku v MarushkaDesignu OBSAH 1 CÍL PŘÍKLADU...2 2 PRÁCE S PŘÍKLADEM...2 3 UKÁZKA DIALOGOVÉHO OKNA...3 4 STRUČNÝ POPIS PŘÍKLADU V MARUSHKADESIGNU...5-1 - 1 Cíl příkladu V tomto příkladu si ukážeme

Více

Programátorská dokumentace

Programátorská dokumentace Programátorská dokumentace Požadavky Cílem tohoto programu bylo představit barevné systémy, zejména převody mezi nejpoužívanějšími z nich. Zároveň bylo úkolem naprogramovat jejich demonstraci. Pro realizaci

Více

43 HTML šablony. Záložka Šablony v systému

43 HTML šablony. Záložka Šablony v systému 43 HTML šablony Modul HTML šablony slouží ke správě šablon pro výstupy z informačního systému modularis ve formátu HTML. Modul umožňuje k šablonám doplňovat patičku, dokumentaci a vázat šablony na konkrétní

Více

Popis ovládání. Po přihlášení do aplikace se objeví navigátor. Navigátor je stromově seřazen a slouží pro přístup ke všem oknům celé aplikace.

Popis ovládání. Po přihlášení do aplikace se objeví navigátor. Navigátor je stromově seřazen a slouží pro přístup ke všem oknům celé aplikace. Popis ovládání 1. Úvod Tento popis má za úkol seznámit uživatele se základními principy ovládání aplikace. Ovládání je možné pomocí myši, ale všechny činnosti jsou dosažitelné také pomocí klávesnice. 2.

Více

Přerušovací systém s prioritním řetězem

Přerušovací systém s prioritním řetězem Přerušovací systém s prioritním řetězem Doplňující text pro přednášky z POT Úvod Přerušovací systém mikropočítače může být koncipován několika způsoby. Jednou z možností je přerušovací systém s prioritním

Více

Mikroekonomie Nabídka, poptávka

Mikroekonomie Nabídka, poptávka Téma cvičení č. 2: Mikroekonomie Nabídka, poptávka Ing. Jaroslav ŠETEK, Ph.D. Katedra ekonomiky, JČU Podstatné z minulého cvičení Matematický pojmový aparát v Mikroekonomii Důležité minulé cvičení kontrolní

Více

Uživatelská příručka.!instalace!průvodce.!dialogová okna!program zevnitř

Uživatelská příručka.!instalace!průvodce.!dialogová okna!program zevnitř Uživatelská příručka!instalace!průvodce!použití!dialogová okna!program zevnitř KAPITOLA 1: INSTALACE PROGRAMU Svitek...4 HARDWAROVÉ POŽADAVKY...4 SOFTWAROVÉ POŽADAVKY...4 INSTALACE PROGRAMU Svitek NA VÁŠ

Více

Programátorská příručka

Programátorská příručka KAPITOLA 1. PROGRAMÁTORSKÁ PŘÍRUČKA Kapitola 1 Programátorská příručka 1.1 Úvod 1.1.1 Technologie Program je psaný v jazyce Java 1.7. GUI je vytvářeno pomocí knihovny SWT. (http://eclipse.org/swt/) Pro

Více

Mikroekonomie. Nabídka, poptávka. = c + d.q. P s. Nabídka, poptávka. Téma cvičení č. 2: Téma. Nabídka (supply) S. Obecná rovnice nabídky

Mikroekonomie. Nabídka, poptávka. = c + d.q. P s. Nabídka, poptávka. Téma cvičení č. 2: Téma. Nabídka (supply) S. Obecná rovnice nabídky Téma cvičení č. 2: Mikroekonomie Nabídka, poptávka Ing. Jaroslav ŠETEK, Ph.D. Katedra ekonomiky, JČU Téma Nabídka, poptávka Nabídka (supply) S Nabídka představuje objem zboží, které jsou výrobci ochotni

Více

Uživatelský manuál. Aplikace GraphViewer. Vytvořil: Viktor Dlouhý

Uživatelský manuál. Aplikace GraphViewer. Vytvořil: Viktor Dlouhý Uživatelský manuál Aplikace GraphViewer Vytvořil: Viktor Dlouhý Obsah 1. Obecně... 3 2. Co aplikace umí... 3 3. Struktura aplikace... 4 4. Mobilní verze aplikace... 5 5. Vytvoření projektu... 6 6. Části

Více

Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií

Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií 1 Fakulta elektrotechniky a informatiky Katedra softwarových technologií 12. října 2009 Organizace výuky Přednášky Teoretické základy dle normy jazyka C Cvičení Praktické úlohy odpřednášené látky Prostřední

Více

Zpravodaj. Uživatelská příručka. Verze

Zpravodaj. Uživatelská příručka. Verze Zpravodaj Uživatelská příručka Verze 02.01.02 1. Úvod... 3 2. Jak číst tuto příručku... 4 3. Funkčnost... 5 3.1. Seznam zpráv... 5 4. Ovládání programu... 6 4.1. Hlavní okno serveru... 6 4.2. Seznam zpráv...

Více

Algoritmizace diskrétních. Ing. Michal Dorda, Ph.D.

Algoritmizace diskrétních. Ing. Michal Dorda, Ph.D. Algoritmizace diskrétních simulačních modelů Ing. Michal Dorda, Ph.D. 1 Úvodní poznámky Při programování simulačních modelů lze hlavní dílčí problémy shrnout do následujících bodů: 1) Zachycení statických

Více

Programování v C++ 3, 3. cvičení

Programování v C++ 3, 3. cvičení Programování v C++ 3, 3. cvičení úvod do objektově orientovaného programování 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled Dokončení spojového

Více

STATISTICA Téma 1. Práce s datovým souborem

STATISTICA Téma 1. Práce s datovým souborem STATISTICA Téma 1. Práce s datovým souborem 1) Otevření datového souboru Program Statistika.cz otevíráme z ikony Start, nabídka Programy, podnabídka Statistika Cz 6. Ze dvou nabídnutých možností vybereme

Více

Nový způsob práce s průběžnou klasifikací lze nastavit pouze tehdy, je-li průběžná klasifikace v evidenčním pololetí a školním roce prázdná.

Nový způsob práce s průběžnou klasifikací lze nastavit pouze tehdy, je-li průběžná klasifikace v evidenčním pololetí a školním roce prázdná. Průběžná klasifikace Nová verze modulu Klasifikace žáků přináší novinky především v práci s průběžnou klasifikací. Pro zadání průběžné klasifikace ve třídě doposud existovaly 3 funkce Průběžná klasifikace,

Více

Simulace. Simulace dat. Parametry

Simulace. Simulace dat. Parametry Simulace Simulace dat Menu: QCExpert Simulace Simulace dat Tento modul je určen pro generování pseudonáhodných dat s danými statistickými vlastnostmi. Nabízí čtyři typy rozdělení: normální, logaritmicko-normální,

Více

NÁVOD K OVLÁDÁNÍ PÁLÍCÍHO STROJE A ŘÍDÍCÍHO SYSTÉMU RIPAST 401

NÁVOD K OVLÁDÁNÍ PÁLÍCÍHO STROJE A ŘÍDÍCÍHO SYSTÉMU RIPAST 401 NÁVOD K OVLÁDÁNÍ PÁLÍCÍHO STROJE A ŘÍDÍCÍHO SYSTÉMU RIPAST 401 Start stroje Stroj se uvádí do provozu stisknutím talčítka START na ovládacím panelu. Po zapnutí stroje a načtení operačního systému se objeví

Více

Bridge. Známý jako. Účel. Použitelnost. Handle/Body

Bridge. Známý jako. Účel. Použitelnost. Handle/Body Bridge Bridge Známý jako Handle/Body Účel odděluje abstrakci (rozhraní a jeho sémantiku) od její konkrétní implementace předchází zbytečnému nárůstu počtu tříd při přidávání implementací používá se v době

Více

Konstruktory a destruktory

Konstruktory a destruktory Konstruktory a destruktory Nedostatek atributy po vytvoření objektu nejsou automaticky inicializovány hodnota atributů je náhodná vytvoření metody pro inicializaci, kterou musí programátor explicitně zavolat,

Více

Nové funkcé programu TRIFID 2015

Nové funkcé programu TRIFID 2015 Nové funkcé programu TRIFID 2015 Popis rozdílů verze 6.30 oproti verzi 6.20 Třetí sazba DPH V případě potřeby je možné nastavit program pro použití třech sazeb DPH (pro rok 2015 jsou do druhé snížené sazby

Více

Pokročilé programování v jazyce C pro chemiky (C3220) Třídy v C++

Pokročilé programování v jazyce C pro chemiky (C3220) Třídy v C++ Pokročilé programování v jazyce C pro chemiky (C3220) Třídy v C++ Třídy v C++ Třídy jsou uživatelsky definované typy podobné strukturám v C, kromě datových položek (proměnných) však mohou obsahovat i funkce

Více

Úvod...1 Instalace...1 Popis funkcí...2 Hlavní obrazovka...2 Menu...3 Práce s aplikací - příklad...5

Úvod...1 Instalace...1 Popis funkcí...2 Hlavní obrazovka...2 Menu...3 Práce s aplikací - příklad...5 Rejstřík Úvod...1 Instalace...1 Popis funkcí...2 Hlavní obrazovka...2 Menu...3 Práce s aplikací - příklad...5 Úvod Správcovská aplikace slouží k vytvoření vstupního a zašifrovaného souboru pro odečtovou

Více

36 Elektronické knihy

36 Elektronické knihy 36 Elektronické knihy Uživatelský modul Elektronické knihy slouží k přípravě a publikování informací ve formátu HTML. Tento formát je vhodný pro prezentaci informací na internetu a je široce podporován

Více

verze Grafický editor PALSTAT s.r.o. systémy řízení jakosti PALSTAT CAQ 1 Obsah

verze Grafický editor PALSTAT s.r.o. systémy řízení jakosti PALSTAT CAQ 1 Obsah 1 Obsah 1 Obsah... 1 2 Úvod... 2 2.1 Výhody... 2 2.2 Základní ovládání... 2 3 Menu... 3 3.1 Menu Soubor... 3 3.1.1 Menu Soubor / Nový... 3 3.1.2 Menu Soubor / Otevřít... 3 3.1.3 Menu Soubor / Otevřít podle

Více

programátorský manuál

programátorský manuál programátorský manuál Marek Polák 1. ročník, studijní skupina 41 zimní semestr 2012/2013 Programování I NPRG030 1. Úvod Vítejte v programátorském manuálu k programu Hádej zvíře. Tento manuál by Vám měl

Více

Druhá skupina zadání projektů do předmětu Algoritmy II, letní semestr 2014/2015

Druhá skupina zadání projektů do předmětu Algoritmy II, letní semestr 2014/2015 Druhá skupina zadání projektů do předmětu Algoritmy II, letní semestr 2014/2015 doc. Mgr. Jiří Dvorský, Ph.D. 6. dubna 2015 Verze zadání 6. dubna 2015 První verze 1 1 Sledování elektroměrů V panelovém

Více

Úvod do počítačových sítí

Úvod do počítačových sítí Úvod do počítačových sítí Jméno a příjmení: Jan Tichava Osobní číslo: Studijní skupina: středa, 3 4 Obor: INIB INF E-mail: jtichava@students.zcu.cz Datum odevzdání: 19.12.06 Základní charakteristika Jednoduchá

Více

Na obrázku níže je vidět jedno z možných nastavení umístění grafu Ve sloupci pro graf. Spuštění první plovoucí sady. Spuštění druhé plovoucí sady

Na obrázku níže je vidět jedno z možných nastavení umístění grafu Ve sloupci pro graf. Spuštění první plovoucí sady. Spuštění druhé plovoucí sady Pokročilé grafy Různé grafy ukazují historický pohled na trh mnoha různými metodami. To vám umožňuje na první pohled vidět historii obchodování na jednom nebo na několika výběrech. Můžete mít až tři oddělené

Více

24-2-2 PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: 23.7.2013 KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

24-2-2 PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: 23.7.2013 KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1 24-2-2 PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE AUTOR DOKUMENTU: MGR. MARTINA SUKOVÁ DATUM VYTVOŘENÍ: 23.7.2013 KLÍČOVÁ AKTIVITA: 02 UČIVO: STUDIJNÍ OBOR: PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) INFORMAČNÍ TECHNOLOGIE

Více

Mnohotvarost (polymorfizmus)

Mnohotvarost (polymorfizmus) Mnohotvarost (polymorfizmus) TYPY MNOHOTVAROSTI... 2 PŘETĚŽOVÁNÍ METOD, PŘETĚŽOVÁNÍ OPERACÍ... 3 PŘETÍŽENÍ OPERÁTORŮ... 4 ČASTO PŘETĚŽOVANÉ OPERÁTORY... 4 PŘEPISOVÁNÍ... 7 VIRTUÁLNÍ METODY... 10 SEZNAM

Více

Internetový přístup do databáze FADN CZ - uživatelská příručka Modul FADN RESEARCH / DATA

Internetový přístup do databáze FADN CZ - uživatelská příručka Modul FADN RESEARCH / DATA Internetový přístup do databáze FADN CZ - uživatelská příručka Modul FADN RESEARCH / DATA Modul FADN RESEARCH je určen pro odborníky z oblasti zemědělské ekonomiky. Modul neomezuje uživatele pouze na předpřipravené

Více

ČÁST 1. Základy 32bitového programování ve Windows

ČÁST 1. Základy 32bitového programování ve Windows Obsah Úvod 13 ČÁST 1 Základy 32bitového programování ve Windows Kapitola 1 Nástroje pro programování ve Windows 19 První program v Assembleru a jeho kompilace 19 Objektové soubory 23 Direktiva INVOKE 25

Více

PŘETĚŽOVÁNÍ OPERÁTORŮ

PŘETĚŽOVÁNÍ OPERÁTORŮ PŘETĚŽOVÁNÍ OPERÁTORŮ Jazyk C# podobně jako jazyk C++ umožňuje přetěžovat operátory, tj. rozšířit definice některých standardních operátorů na uživatelem definované typy (třídy a struktury). Stejně jako

Více

2 PŘÍKLAD IMPORTU ZATÍŽENÍ Z XML

2 PŘÍKLAD IMPORTU ZATÍŽENÍ Z XML ROZHRANÍ ESA XML Ing. Richard Vondráček SCIA CZ, s. r. o., Thákurova 3, 160 00 Praha 6 www.scia.cz 1 OTEVŘENÝ FORMÁT Jednou z mnoha užitečných vlastností programu ESA PT je podpora otevřeného rozhraní

Více

E-NABÍDKA PARTNER.REDA.CZ

E-NABÍDKA PARTNER.REDA.CZ E-NABÍDKA PARTNER.REDA.CZ Reda e-nabídka představuje mocný nástroj, díky kterému mohou naši registrovaní klienti přímo z prostředí e-shopu partner.reda.cz vytvářet vlastní produktové nabídky pro své zákazníky.

Více

Tematický celek Proměnné. Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace Deklarace proměnných

Tematický celek Proměnné. Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace Deklarace proměnných Tematický celek 03 3.1 Proměnné Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace. 3.1.1 Deklarace proměnných Dim jméno_proměnné [As typ] - deklarace uvnitř procedury platí pouze pro

Více

Obsah. 1.1 Práce se záznamy... 3 1.2 Stránka Dnes... 4. 2.1 Kontakt se zákazníkem... 5

Obsah. 1.1 Práce se záznamy... 3 1.2 Stránka Dnes... 4. 2.1 Kontakt se zákazníkem... 5 CRM SYSTÉM KORMORÁN UŽIVATELSKÁ PŘÍRUČKA Obsah 1 Základní práce se systémem 3 1.1 Práce se záznamy................................. 3 1.2 Stránka Dnes.................................... 4 1.3 Kalendář......................................

Více

Výkresy. Projekt SIPVZ D Modelování v SolidWorks. Autor: ing. Laďka Krejčí

Výkresy. Projekt SIPVZ D Modelování v SolidWorks. Autor: ing. Laďka Krejčí Výkresy Projekt SIPVZ 2006 3D Modelování v SolidWorks Autor: ing. Laďka Krejčí 2 Obsah úlohy Otevření šablony výkresu Vlastnosti, úprava a uložení formátu listu Nastavení detailů dokumentu Vytvoření výkresu

Více

Pole a kolekce. v C#, Javě a C++

Pole a kolekce. v C#, Javě a C++ Pole a kolekce v C#, Javě a C++ C# Deklarace pole typ_prvku_pole[] jmeno_pole; Vytvoření pole jmeno_pole = new typ_prvku_pole[pocet_prvku_pole]; Inicializace pole double[] poled = 4.8, 8.2, 7.3, 8.0; Java

Více

Aktuální výběr, nad kterým je kurzor myši

Aktuální výběr, nad kterým je kurzor myši Hlavní okno Po přihlášení do aplikace se vám zobrazí Hlavní okno. Zde můžete vidět stav vašeho účtu pro hlavní i australské konto. Stav účtů se ve výchozím nastavení automaticky aktualizuje každých 5 sekund

Více

45 Plánovací kalendář

45 Plánovací kalendář 45 Plánovací kalendář Modul Správa majetku slouží ke tvorbě obecných ročních plánů činností organizace. V rámci plánu je třeba definovat oblasti činností, tj. oblasti, ve kterých je možné plánovat. Každá

Více

Tvorba kurzu v LMS Moodle

Tvorba kurzu v LMS Moodle Tvorba kurzu v LMS Moodle Před počátkem práce na tvorbě základního kurzu znovu připomínám, že pro vytvoření kurzu musí být profil uživatele nastaven administrátorem systému minimálně na hodnotu tvůrce

Více

Zobrazování bannerů podporují pouze nově vytvořené šablony motivů vzhledu.

Zobrazování bannerů podporují pouze nově vytvořené šablony motivů vzhledu. Bannerový systém ProEshop od verze 1.13 umožňuje zobrazování bannerů na popředí e-shopu. Bannerový systém je přístupný v administraci e-shopu v nabídce Vzhled, texty Bannerový systém v případě, že aktivní

Více

Microsoft Access. Úterý 26. února. Úterý 5. března. Typy objektů databáze: Vytvoření a návrh nové tabulky

Microsoft Access. Úterý 26. února. Úterý 5. března. Typy objektů databáze: Vytvoření a návrh nové tabulky Úterý 26. února Microsoft Access Databáze je seskupení většího množství údajů, které mají určitou logiku a lze je určitým způsobem vyhodnocovat, zpracovávat a analyzovat Access je jedním z programů určených

Více

TG Motion verze 4 Modul Virtuální PLC návod k obsluze

TG Motion verze 4 Modul Virtuální PLC návod k obsluze TG Motion verze 4 Modul Virtuální PLC návod k obsluze Olomoucká 1290/79-1 - Fax: +420 548 141 890 Historie revizí datum verze popis 10. 1. 2017 1.0 31. 7. 2017 1.1 upravena typografie Olomoucká 1290/79-2

Více

zapište obslužnou metodu události Click tlačítka a vyzkoušejte chování polevýsledek.text = polečíslo1.text + polečíslo2.text;

zapište obslužnou metodu události Click tlačítka a vyzkoušejte chování polevýsledek.text = polečíslo1.text + polečíslo2.text; Typy a proměnné zapište obslužnou metodu události Click tlačítka a vyzkoušejte chování polevýsledek.text = polečíslo1.text + polečíslo2.text; Typy Hodnoty, kterých mohou nabývat vlastnosti prvků nejsou

Více

Co je nového 2018 R2

Co je nového 2018 R2 Co je nového 2018 R2 Obsah NOVINKY... 5 1: Vyhledat prvek... 5 2: Čáry modelu podle... 6 3: Duplikovat výkresy... 7 4: Délka kabelů... 8 5: Výškové kóty... 9 VYLEPŠENÍ... 10 1: Excel Link... 10 2: Uspořádání

Více

Programování v jazyce C a C++

Programování v jazyce C a C++ Programování v jazyce C a C++ Richter 1 Petyovský 2 1. března 2015 1 Ing. Richter Miloslav, Ph.D., UAMT FEKT VUT Brno 2 Ing. Petyovský Petr, UAMT FEKT VUT Brno C++ Stručná charakteristika Nesdíĺı normu

Více

Svolávací systém Uživatelský manuál

Svolávací systém Uživatelský manuál Uživatelský manuál TTC TELEKOMUNIKACE, s.r.o. Třebohostická 987/5 100 00 Praha 10 tel.: 234 052 111 fax.: 234 052 999 e-mail: ttc@ttc.cz http://www.ttc-telekomunikace.cz Datum vydání: 14. srpna 2013 Číslo

Více

Čtvrtek 3. listopadu. Makra v Excelu. Obecná definice makra: Spouštění makra: Druhy maker, způsoby tvorby a jejich ukládání

Čtvrtek 3. listopadu. Makra v Excelu. Obecná definice makra: Spouštění makra: Druhy maker, způsoby tvorby a jejich ukládání Čtvrtek 3. listopadu Makra v Excelu Obecná definice makra: Podle definice je makro strukturovanou definicí jedné nebo několika akcí, které chceme, aby MS Excel vykonal jako odezvu na nějakou námi definovanou

Více

UŽIVATELSKÝ MANUÁL PERSONALIZACE MOJE SODEXO V.3 2009-11-08

UŽIVATELSKÝ MANUÁL PERSONALIZACE MOJE SODEXO V.3 2009-11-08 UŽIVATELSKÝ MANUÁL PERSONALIZACE MOJE SODEXO V.3 2009-11-08 1 Obsah dokumentu 1 Obsah dokumentu... 2 2 Personalizovaná objednávka... 3 3 Jednoduchá... 3 4 Standardní... 4 5 Komplexní... 5 5.1 Párování

Více

Výukový materiál zpracovaný v rámci operačního programu Vzdělávání pro konkurenceschopnost

Výukový materiál zpracovaný v rámci operačního programu Vzdělávání pro konkurenceschopnost Výukový materiál zpracovaný v rámci operačního programu Vzdělávání pro konkurenceschopnost Registrační číslo: CZ.1.07/1. 5.00/34.0084 Šablona: III/2 Inovace a zkvalitnění výuky prostřednictvím ICT Sada:

Více

Access. Tabulky. Vytvoření tabulky

Access. Tabulky. Vytvoření tabulky Access správa databáze (tabulky, relace, omezující podmínky, data...) uživatelské prostředí pro práci s databází (formuláře, sestavy, datové stránky, makra...) ukázková aplikace Northwind hlavní okno databáze

Více

8 NEZAMĚSTNANOST. 8.1 Klíčové pojmy

8 NEZAMĚSTNANOST. 8.1 Klíčové pojmy 8 NEZAMĚSTNANOST 8.1 Klíčové pojmy Ekonomicky aktivní obyvatelstvo je definováno jako suma zaměstnaných a nezaměstnaných a míra nezaměstnanosti je definovaná jako procento ekonomicky aktivního obyvatelstva,

Více

Z. Kotala, P. Toman: Java ( Obsah )

Z. Kotala, P. Toman: Java ( Obsah ) Z. Kotala, P. Toman: Java ( Obsah ) 13. Výjimky Výjimka (exception) je definována jako událost, která nastane během provádění programu a která naruší normální běh instrukcí. Výjimka je vyvolána například

Více

Připravil: David Procházka. Vertex Buffer Objects

Připravil: David Procházka. Vertex Buffer Objects 30. září 2013, Brno Připravil: David Procházka Vertex Buffer Objects Počítačová grafika 2 Obsah přednášky Strana 2 / 22 Obsah přednášky 1 Obsah přednášky 2 Vertex Buffer Objects 3 Příklady 4 Shrnutí Obsah

Více

Semestrální práce Mozaika aneb Co všechno umí pan Voronoi

Semestrální práce Mozaika aneb Co všechno umí pan Voronoi Západočeská univerzita v Plzni Fakulta aplikovaných věd Katedra informatiky a výpočetní techniky Semestrální práce Mozaika aneb Co všechno umí pan Voronoi Plzeň, 2008 Aubrecht Vladimír Obsah 1 Zadání...

Více

BAKALÁŘSKÁ PRÁCE. Petr Michalík

BAKALÁŘSKÁ PRÁCE. Petr Michalík Univerzita Karlova v Praze Matematicko-fyzikální fakulta BAKALÁŘSKÁ PRÁCE Petr Michalík Ekonomická strategická hra Katedra softwarového inženýrství Vedoucí bakalářské práce: Mgr. Ondřej Zajíček Studijní

Více

SEMESTRÁLNÍ PRÁCE Z PŘEDMĚTU MODELOVÁNÍ MATLABEM

SEMESTRÁLNÍ PRÁCE Z PŘEDMĚTU MODELOVÁNÍ MATLABEM SEMESTRÁLNÍ PRÁCE Z PŘEDMĚTU MODELOVÁNÍ MATLABEM Jméno: Petr Thür Os. číslo: A04236 E-mail: petr.thur@post.cz Zadání: 8-D Datum vypracování: 7. 5. 2005 Zadání: Sestavte program (funkční M-soubor) pro vykreslení

Více

Transformace digitalizovaného obrazu

Transformace digitalizovaného obrazu Transformace digitalizovaného obrazu KIV/PPR Martina Málková (tina.malkova@centrum.cz) *15.10.1984 1 Zadání Realizujte transformaci digitalizovaného obrazu zadaného jako matice (m,n) s celočíselnými prvky.

Více

Dotyková obrázovká v prográmu TRIFID

Dotyková obrázovká v prográmu TRIFID Dotyková obrázovká v prográmu TRIFID Nastavení Nastavuje se volbou funkce SYSTÉMOVÉ FUNKCE/KONFIGURACE/WIN KONFIGURACE (spustí se tlačítkem )/LOKÁLNÍ PARAMETRY/ZÁLOŽKA PRODEJ. V této tabulce lze zapnout

Více

Kvízové otázky Obecná ekonomie I. Teorie firmy

Kvízové otázky Obecná ekonomie I. Teorie firmy 1. Firmy působí: a) na trhu výrobních faktorů b) na trhu statků a služeb c) na žádném z těchto trhů d) na obou těchto trzích Kvízové otázky Obecná ekonomie I. Teorie firmy 2. Firma na trhu statků a služeb

Více

Kontingenční tabulky v MS Excel 2010

Kontingenční tabulky v MS Excel 2010 Kontingenční tabulky v MS Excel 2010 Autor: RNDr. Milan Myšák e-mail: milan.mysak@konero.cz Obsah 1 Vytvoření KT... 3 1.1 Data pro KT... 3 1.2 Tvorba KT... 3 2 Tvorba KT z dalších zdrojů dat... 5 2.1 Data

Více

Prohledávání do šířky = algoritmus vlny

Prohledávání do šířky = algoritmus vlny Prohledávání do šířky = algoritmus vlny - souběžně zkoušet všechny možné varianty pokračování výpočtu, dokud nenajdeme řešení úlohy průchod stromem všech možných cest výpočtu do šířky, po vrstvách (v každé

Více

Téma 8: Konfigurace počítačů se systémem Windows 7 IV

Téma 8: Konfigurace počítačů se systémem Windows 7 IV Téma 8: Konfigurace počítačů se systémem Windows 7 IV 1 Teoretické znalosti V tomto cvičení budete pracovat se správou vlastností systému, postupně projdete všechny karty tohoto nastavení a vyzkoušíte

Více

Uživatelská příručka. 06/2018 Technické změny vyhrazeny.

Uživatelská příručka. 06/2018 Technické změny vyhrazeny. Uživatelská příručka 1 OBSAH 1 ÚVOD... 3 1.1 Merbon SCADA... 3 1.1.1 K čemu program slouží...3 2 Přihlášení a odhlášení z programu... 4 3 Projekty... 5 3.1 Výběr zobrazení... 5 3.2 Schémata... 6 3.3 Grafy...

Více

umenugr JEDNOTKA PRO VYTVÁŘENÍ UŽIVATELSKÝCH GRAFICKÝCH MENU Příručka uživatele a programátora

umenugr JEDNOTKA PRO VYTVÁŘENÍ UŽIVATELSKÝCH GRAFICKÝCH MENU Příručka uživatele a programátora umenugr JEDNOTKA PRO VYTVÁŘENÍ UŽIVATELSKÝCH GRAFICKÝCH MENU Příručka uživatele a programátora SofCon spol. s r.o. Střešovická 49 162 00 Praha 6 tel/fax: +420 220 180 454 E-mail: sofcon@sofcon.cz www:

Více

GEOM LITE - MANUÁL hlavní obrazovka

GEOM LITE - MANUÁL hlavní obrazovka GEOM LITE - MANUÁL hlavní obrazovka Levý panel Pomoci levého panelu je možné vybírat aktivní vrstvy, měnit jejich průhlednost a pořadí. V dolní části je zobrazena legenda. Horní panel V horním panelu se

Více

POTŘEBA A PRODUKCE ENERGIÍ V ZEMĚDĚLSKÉ VÝROBĚ V ČR V KRIZOVÉ SITUACI. Specializovaná mapa. Návod k používání programu

POTŘEBA A PRODUKCE ENERGIÍ V ZEMĚDĚLSKÉ VÝROBĚ V ČR V KRIZOVÉ SITUACI. Specializovaná mapa. Návod k používání programu VÝZKUMNÝ ÚSTAV ZEMĚDĚLSKÉ TECHNIKY, v.v.i. ČESKÁ ZEMĚDĚLSKÁ UNIVERZITA v PRAZE POTŘEBA A PRODUKCE ENERGIÍ V ZEMĚDĚLSKÉ VÝROBĚ V ČR V KRIZOVÉ SITUACI Specializovaná mapa Návod k používání programu Projekt

Více

Asistivní technologie a dohledové systémy Dyslexie čtení pomocí okénka

Asistivní technologie a dohledové systémy Dyslexie čtení pomocí okénka Asistivní technologie a dohledové systémy Dyslexie čtení pomocí okénka Michal Náhlík Software pro podporu výuky čtení pomocí okénka Úvod Software, který nahrazuje fyzickou pomůcku, takzvané okénko, používané

Více

Outdoor Expert. Uživatelský manuál. Verze aplikace: OutdoorExpert_Manual.docx 1 /

Outdoor Expert. Uživatelský manuál. Verze aplikace: OutdoorExpert_Manual.docx 1 / Outdoor Expert Uživatelský manuál Verze aplikace: 1.0 28. 12. 2014 OutdoorExpert_Manual.docx 1 / 35 2015-01-01 Obsah 1 ÚVOD... 3 2 POPIS FUNKČNOSTÍ APLIKACE... 3 2.1 SPUŠTĚNÍ APLIKACE... 3 2.2 ZALOŽENÍ

Více

Jazyk C# (seminář 6)

Jazyk C# (seminář 6) Jazyk C# (seminář 6) Pavel Procházka KMI 29. října 2014 Delegát motivace Delegáty a události Jak docílit v C# funkcionální práce s metodami v C je to pomocí pointerů na funkce. Proč to v C# nejde pomocí

Více

Přehledy pro Tabulky Hlavním smyslem této nové agendy je jednoduché řazení, filtrování a seskupování dle libovolných sloupců.

Přehledy pro Tabulky Hlavním smyslem této nové agendy je jednoduché řazení, filtrování a seskupování dle libovolných sloupců. Přehledy pro Tabulky V programu CONTACT Professional 5 naleznete u firem, osob a obchodních případů záložku Tabulka. Tuto záložku lze rozmnožit, přejmenovat a sloupce je možné definovat dle vlastních požadavků

Více

Při studiu tohoto bloku se předpokládá, že student je zvládá základy programování v jazyce Java s využitím vývojového prostředí NetBeans.

Při studiu tohoto bloku se předpokládá, že student je zvládá základy programování v jazyce Java s využitím vývojového prostředí NetBeans. 1 Grafické rozhraní Studijní cíl Tento blok je věnován vytváření programů s využitím grafického rozhraní (GUI). Vysvětlen bude základní filozofie pro vytváření aplikací s GUI ve srovnání s konzolovými

Více

Maturitní projekt do IVT Pavel Doleček

Maturitní projekt do IVT Pavel Doleček Maturitní projekt do IVT Pavel Doleček CO FILMBOOK JE Filmbook je uzavřená webová aplikace pro celkovou správu informací a dat souvisejících se sledováním filmů. Primárně je zaměřen na uchovávání a spravování

Více

1. Zpracování událostí na pozadí aplikace

1. Zpracování událostí na pozadí aplikace 1. Zpracování událostí na pozadí aplikace Ing. Michal Bližňák, Ph.D. Ústav informatiky a umělé inteligence Fakulta aplikované informatiky UTB Zĺın Paralelní procesy a programování, Zĺın, 3. února 2014

Více

Nemocnice. Prvotní analýza a plán projektu

Nemocnice. Prvotní analýza a plán projektu Nemocnice Projekt do předmětu AIS Prvotní analýza a plán projektu Lukáš Pohl, xpohll00, xkosti03 Jan Novák, xnovak79 2009/2010 1 Neformální specifikace FN potřebuje informační systém, který bude obsahovat

Více

Hodnocení ekonomické efektivnosti projektů Průměrný výnos z investice, doba návratnosti, ČSH, VVP

Hodnocení ekonomické efektivnosti projektů Průměrný výnos z investice, doba návratnosti, ČSH, VVP Hodnocení ekonomické efektivnosti projektů Průměrný výnos z investice, doba návratnosti, ČSH, VVP Investice je charakterizována jako odložená spotřeba. Podnikové investice jsou ty statky, které nejsou

Více

Pokročilé programování v jazyce C pro chemiky (C3220) Dědičnost tříd v C++

Pokročilé programování v jazyce C pro chemiky (C3220) Dědičnost tříd v C++ Pokročilé programování v jazyce C pro chemiky (C3220) Dědičnost tříd v C++ Dědičnost tříd Dědičnost umožňuje vytvářet nové třídy z tříd existujících tak, že odvozené třídy (tzv. potomci) dědí vlastnosti

Více

Ovládání Open Office.org Calc Ukládání dokumentu : Levým tlačítkem myši kliknete v menu na Soubor a pak na Uložit jako.

Ovládání Open Office.org Calc Ukládání dokumentu : Levým tlačítkem myši kliknete v menu na Soubor a pak na Uložit jako. Ukládání dokumentu : Levým tlačítkem myši kliknete v menu na Soubor a pak na Uložit jako. Otevře se tabulka, v které si najdete místo adresář, pomocí malé šedočerné šipky (jako na obrázku), do kterého

Více

Generické programování

Generické programování Generické programování Od C# verze 2.0 = vytváření kódu s obecným datovým typem Příklad generická metoda, zamění dva parametry: static void Swap(ref T p1, ref T p2) T temp; temp = p1; p1 = p2; p2 =

Více

Programování v C++, 2. cvičení

Programování v C++, 2. cvičení Programování v C++, 2. cvičení 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled 1 Operátory new a delete 2 3 Operátory new a delete minule

Více

8 Třídy, objekty, metody, předávání argumentů metod

8 Třídy, objekty, metody, předávání argumentů metod 8 Třídy, objekty, metody, předávání argumentů metod Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost třídám a objektům, instančním

Více

Náplň. v.0.03 16.02.2014. - Jednoduché příklady na práci s poli v C - Vlastnosti třídění - Způsoby (algoritmy) třídění

Náplň. v.0.03 16.02.2014. - Jednoduché příklady na práci s poli v C - Vlastnosti třídění - Způsoby (algoritmy) třídění Náplň v.0.03 16.02.2014 - Jednoduché příklady na práci s poli v C - Vlastnosti třídění - Způsoby (algoritmy) třídění Spojení dvou samostatně setříděných polí void Spoj(double apole1[], int adelka1, double

Více

Výčtový typ strana 67

Výčtový typ strana 67 Výčtový typ strana 67 8. Výčtový typ V této kapitole si ukážeme, jak implementovat v Javě statické seznamy konstant (hodnot). Příkladem mohou být dny v týdnu, měsíce v roce, planety obíhající kolem slunce

Více

Aplikované úlohy Solid Edge. SPŠSE a VOŠ Liberec. Ing. Jan Boháček [ÚLOHA 23 FORMÁT SOUČÁSTI]

Aplikované úlohy Solid Edge. SPŠSE a VOŠ Liberec. Ing. Jan Boháček [ÚLOHA 23 FORMÁT SOUČÁSTI] Aplikované úlohy Solid Edge SPŠSE a VOŠ Liberec Ing. Jan Boháček [ÚLOHA 23 FORMÁT SOUČÁSTI] 1 CÍL KAPITOLY V této kapitole se zaměříme na Formát součásti, pod kterým si můžeme představit nastavení uživatelského

Více