Programování a počítače 2 Počítačová cvičení pro obor B-EST

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

Download "Programování a počítače 2 Počítačová cvičení pro obor B-EST"

Transkript

1 FAKULTA ELEKTROTECHNIKY A KOMUNIKAČNÍCH TECHNOLOGIÍ VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Programování a počítače 2 Počítačová cvičení pro obor B-EST Autor textu: doc. Ing. Jiří Šebesta, Ph.D Komplexní inovace studijních programů a zvyšování kvality výuky na FEKT VUT v Brně OP VK CZ.1.07/2.2.00/

2 2 FEKT VUT v Brně Obsah ÚVOD ZPRACOVÁNÍ OBRÁZKŮ VE FORMÁTU BMP OBJEKTOVÉ TŘÍDY V C PŘETÍŽENÍ ČLENSKÝCH METOD TŘÍD A DĚDIČNOST FORMULÁŘOVÁ APLIKACE V C++ PRO WINDOWS GRAFICKÁ APLIKACE PRO WINDOWS S OVLADAČEM GDI MANIPULACE S MATICEMI A 2D GRAFY V MATLABU MODEL FYZIKÁLNÍHO JEVU A 3D GRAFY V MATLABU PARAMETRICKÉ 3D GRAFY V MATLABU MODEL KOMUNIKAČNÍHO SYSTÉMU V MATLABU GRAFICKÉ UŽIVATELSKÉ ROZHRANÍ V MATALABU ODPOVĚDI KE KONTROLNÍM OTÁZKÁM... 42

3 Programování a počítače 2. Počítačová cvicení pro obor B-EST. 3 Úvod Tato skripta jsou určena pro studenty předmětu Programování a počítače 2 pro obor Elektronika a sdělovací technika, zkr. BPC2E. Obsahují podrobné návody k počítačovým cvičením uvedeného předmětu. Předmět bezprostředně navazuje na předmět Programování a počítače 1, jehož hlavní náplní bylo seznámit posluchače kurzu se základy programovacího jazyka C dle standardu ANSI. První cvičení je ještě zaměřeno na klasický jazyk C a jeho využití při manipulaci s binárními soubory. Následující čtyři cvičení jsou věnovány objektově orientovanému programování s využitím jazyka C++. Z toho první dvě úlohy jsou orientovány na objasnění základních pojmů a přístupů objektově orientovaného programování, zatím co druhé dvě úlohy jsou pak zaměřeny na řešení jednoduchých formulářových aplikací s využitím Microsoft Visual studia. Další skupina úloh zahrnuje základní vzorové úlohy v Matalbu, postupující od jednoduchých manipulací s maticemi, přes dvoudimezionání a třídimenzionální grafy až po ukázku sestavení modelu komunikačního systému včetně sestavení grafického uživatelského rozhraní pro tento model. Základy Matlabu, který je obecně nástrojem pro modelování systémů a signálů s prvky programovaní, jsou nutné jako prerekvizita k řadě navazujících předmětů oboru Elektronika a sdělovací technika. Jmenujme např. předmět Signály a systémy nebo Číslicové zpracování signálů. Každá úloha obsahuje zadání a rozbor veřejně přístupné úlohy, kterou si studenti mohou nachystat v rámci domácí přípravy. Druhou částí je zadání B, které je přístupné vždy až na začátku vlastního cvičení. Třetí částí je bonusová úloha, která je nadstavbou pro samostatné zdokonalení studenta v dané problematice. Rozbory jednotlivých úloh obsahují rovněž části stěžejního zdrojového kódu s vysvětlením. Na závěr každé kapitoly je uvedena doporučená literatura a tři kontrolní otázky, jejichž odpovědi jsou uvedeny v závěrečné kapitole těchto skript. Součástí úloh je i předpřipravený kód, někdy je to pouze kostra, v jiných případech to může být poměrně rozsáhlý zdrojový kód, který je nutné prostudovat a doplnit. Zdrojové kódy k jednotlivým úlohám jsou k dispozici na www stránkách: 1 Zpracování obrázků ve formátu BMP Cílem je seznámit se s programováním binárních souborů, v případě tohoto cvičení pak s bitmapovými obrázky. Úloha A. Pro tuto úlohu je připraven zdrojový kódu programu k příkladu souboru bpc2e_c01a.c, kde je připravena kompletní úloha, která vygeneruje nekompresovaný bitmapový obrázek (viz obr. 1.1). Na začátku programu jsou kompletně připraveny potřebné hlavičky pro BMP soubory s plným 24bitovým rozlišení barev (RGB barvy po 8 bitech) bez komprese. Pro definici parametrů obrázku v hlavičkách souboru jsou využity předdefinované struktury BITMAPFILEHEADER a BITMAPINFOHEADER z knihovny windows.h. Popis jednotlivých proměnných těchto struktur je uveden v tabulkách 1.1 a 1.2. Jediný parametr obrázku, který je třeba nastavit je šířka a výška v pixelech pomocí maker WIDTH a HEIGHT:

4 4 FEKT VUT v Brně // size of picture definition #define WIDTH 512 #define HEIGHT 512 Tab 1.1. Definice proměnných struktury BITMAPFILEHEADER. Název položky bftype bfsize bfreserved1 bfreserved2 bfoffbits Délka položky 2 byty 4 byty 2 byty 2 byty 4 byty Význam Identifikátor formátu BMP. Aktuální verze formátu BMP zde obsahuje ASCII kód znaků "BM", tj a 0 4D. Celková velikost souboru s obrazovými údaji. Některé aplikace tuto položku ignorují a dosazují zde nulu. Rezerva pro pozdější použití. V současné verzi formátu BMP zde musí být uložena nulová hodnota. Rezerva pro pozdější použití. V současné verzi formátu BMP zde musí být uložena nulová hodnota. Posun struktury BITMAPFILEHEADER od začátku vlastních obrazových dat. Název položky Tab 1.2. Definice proměnných struktury BITMAPINFOHEADER. Délka položky Význam bisize 4 byty Celková velikost datové struktury BITMAPINFOHEADER biwidth 4 byty Šířku obrázku v pixelech biheight 4 byty Výšku obrázku v pixelech biplanes Počet bitových rovin pro výstupní zařízení. V BMP vždy hodnota 2 byty 1. Položka existuje z historických důvodů. Celkový počet bitů na pixel. Podle počtu barev zde mohou být bibitcount 2 byty hodnoty 1, 4, 8 nebo 24 (to odpovídá postupně 2, 16, 256ti barvám popř. plnobarevnému režimu). bicompression 4 byty Typ komprimační metody obrazových dat. Musí být nastavené na jednu z hodnot: 0 (BI_RGB), 1 (BI_RLE8) nebo 2 (BI_RLE4). bisizeimage 4 byty Velikost obrazu v bytech. Pokud je bitmapa nekomprimovaná, může zde být nulová hodnota, protože ji je možno vypočítat z rozměrů obrázků a počtu bitů na pixel. bixpelspermete r biypelspermete r biclrused biclrimportant 4 byty 4 byty 4 byty 4 byty Horizontální rozlišení výstupního zařízení v pixelech na metr. Většina aplikací nemá potřebné informace o výstupním zařízení, a proto do této položky vkládá hodnotu 0. Vertikální rozlišení výstupního zařízení v pixelech na metr. Většina aplikací nemá potřebné informace o výstupním zařízení, a proto do této položky vkládá hodnotu 0. Celkový počet barev, které jsou použité v dané bitmapě. Jestliže je tato hodnota nastavena na nulu, bitmapa používá maximální počet barev. Počet barev, které jsou důležité pro vykreslení bitmapy. Pokud je tato hodnota nulová, jsou všechny barvy důležité. Tento údaj je používán při zobrazování na zařízeních, které mají omezený počet současně zobrazitelných barev. Ostatní položky struktur jsou již předdefinovány, pro BITMAPFILEHEADER: bmp_fh.bftype = 19778; // BITMAPFILEHEADER specification bmp_fh.bfsize = WIDTH * HEIGHT * ; bmp_fh.bfreserved1 = 0; bmp_fh.bfreserved2 = 0; bmp_fh.bfoffbits = 54;

5 Programování a počítače 2. Počítačová cvicení pro obor B-EST. 5 i pro BITMAPINFOHEADER: bmp_ih.bisize = 40; // BITMAPINFOHEADER specification bmp_ih.biwidth = WIDTH; bmp_ih.biheight = HEIGHT; bmp_ih.biplanes = 1; bmp_ih.bibitcount = 24; bmp_ih.bicompression = 0; bmp_ih.bisizeimage = WIDTH * HEIGHT * 3; bmp_ih.bixpelspermeter = 0; bmp_ih.biypelspermeter = 0; bmp_ih.biclrused = 0; bmp_ih.biclrimportant = 0; Hlavičky jsou následně ve správném pořadí nahrány do souboru test.bmp pomocí funkce fwrite(): fwrite(&bmp_fh, sizeof(bmp_fh), 1, fbmp); // write BITMAPFILEHEADER fwrite(&bmp_ih, sizeof(bmp_ih), 1, fbmp); // write BITMAPINFOHEADER V poslední části programu jsou ve dvou vnořených cyklech definovány barvy jednotlivých pixelů a nahrávány do souboru. Pixelová data jsou BMP dvacetičtyřbitovém souboru nahrávána v pořadí RGB (každá barva má 1 byte, a její úroveň od 0 do 255 jako unsigned char) a to postupně po řádcích od levého dolního rohu po pravý horní roh. Každý pixel je definován tripletem těchto úrovní pro červenou, zelenou a modrou složku barvy pixelu. Tento triplet je shrnut ve struktuře bmp_rgb typu RGBTRIPLE. Ve vnořených cyklech se postupně definují a ukládají opět pomocí funkce fwrite() jednotlivé pixely. V příkladu je vidět, že složka červené a modré je vždy nulová, zatímco úroveň zelené barvy je závislá na poloze pixelu. Výsledkem je tedy obrázek s měnící se úrovní zelené barvy od levého dolního rohu po pravý horní roh (viz. obr. 1.1), protože hodnota úrovně zelené barvy je přímo úměrně závislá na součtu indexů řádku a sloupce pro daný pixel: // part for bitmap content definition for(h = 0; h < HEIGHT; h++) // rows in bitmaps from bottom to top { for (v = 0; v < WIDTH; v++) // columns in bitmaps from left to right { bmp_rgb.rgbtred = 0x00; bmp_rgb.rgbtgreen = (h+v)%256; bmp_rgb.rgbtblue = 0x00; fwrite(&bmp_rgb, sizeof(bmp_rgb), 1, fbmp); } } Tzn., že všechny pixely, kde součet h+v je konstantní budou mít stejnou barvu. Pochopitelně je třeba omezit úroveň barvy na rozsah 0 až 255, což lze provést snadno operací zbytku po celočíselném dělení 256. Zkuste pro začátek vymyslet jiný vztah pro výpočet úrovně zelené barvy pixelu, např. při aplikaci následujícího vztahu:

6 6 FEKT VUT v Brně bmp_rgb.rgbtgreen = (cos(2*6.28*v/(1.0*width))+1)*127; získáte krásnou fotografii svislých trubek včetně jasového přechodu do stínu (viz. obr. 1.2). Zkuste zapřemýšlet proč? Nezapomeňte na přilinkování knihovny math.h. Obr Výsledný bitmapový obrázek podle vzoru z příkladu A. Obr Výsledný experimentální obrázek při aplikaci funkce kosinus.

7 Programování a počítače 2. Počítačová cvicení pro obor B-EST. 7 Vaším samostatným úkolem je upravit právě část kódu pro definici pixelů obrázku tak, aby výsledkem byl obrázek podle obr Hodnocení: 1,5 bodu. Úloha B. Obr Požadovaný výsledný bitmapový obrázek pro příklad A. Zadáno cvičícím na začátku cvičení. Hodnocení: 1,5 bodu. Bonusová úloha Pro nadšené programátory i další zájemce je tu opět připravená bonusová úloha. V souboru TPR.bmp je uložen výřez terénního reliéfu jistého území v 256 úrovních šedi od černé definující nejnižší výškovou hladinu až po bílou definující nejvyšší výškovou hladinu. Cílem úlohy je sestavit program, který pro definovanou hladinu moře odpovídající příslušné hodnotě úrovně šedi vygeneruje nový obrázek mapy souše a moře. V řešení může být souše definována zelenou barvou, moře logicky modrou barvou. Číselným parametr hladiny moře v rozsahu 0 až 255 nechť je argumentem při spouštění programu. Parametrem při spouštění může být také jméno výstupního BMP souboru. Terénní reliéf ve stupních šedi je na obrázku 1.4. Jsou zde patrná vyvýšená místa i místa nižší, která připomínají říční odtoky z horské oblasti. Příklad výsledné BMP mapy souše a moře je uveden pro daný reliéf a hladinu moře 80 na obrázku 1.5.

8 8 FEKT VUT v Brně Kontrolní otázky 1.1) Jaké jsou hodnoty položek ve struktuře typu RGBTRIPLE při plnobarevném bitmapovém formátu obrázku, pokud definují barvu pixelu v úrovni šedi? 1.2) Co reprezentuje sizeof() ve funkci fwrite()? 1.3) Kolik barev je možné nadefinovat při plnobarevném bitmapovém formátu obrázku? Obr Terénní reliéf v úrovních šedi. Obr Vygenerovaná mapa souše a moře pro hladinu moře 80.

9 Programování a počítače 2. Počítačová cvicení pro obor B-EST. 9 Literatura [1.1] WRÓBLEWSKI, P. Algoritmy. Datové struktury a programovací techniky. Brno: Computer Press, [1.2] KERNIGHAN, B. W., RITCHIE, D. M. Programovací jazyk C. Brno: Computer Press, [1.3] SOBOTA, B., MILIÁN, J. Grafické formáty. České Budějovice: KOOP nakladatelství, Objektové třídy v C++ Cílem je seznámit se základy objektového programování a sestavování vlastních tříd v C++. Úloha A. Pro tuto úlohu je připraven funkční zdrojový kód k příkladu bpc2e_c02a.cpp. V tomto programu jsou deklarovány a definovány metody tříd pro objekt typu bod class Point, přičemž jako privátní proměnné jsou specifikovány souřadnice bodu ve 2D prostoru X a Y a jako metody jsou připraveny inline funkce pro přístup k privátním souřadnicím bodu: // CLASS POINT class Point // coordinates X,Y { public: void SetPoint(uch x, uch y) {X = x; Y = y;} void SetX(uch x) {X = x;} void SetY(uch y) {Y = y;} uch GetX()const {return X;} uch GetY()const {return Y;} private: uch X; uch Y; }; Další deklarovaná a definovaná třída je pro objekt typu úsečka class Line, která využívá již definované třídy Point pro krajní body úsečky (opět privátní proměnné) a skupinu přístupových metod k těmto krajním bodům: // CLASS LINE class Line // points P1, P2 { public: void SetLine(Point p1, Point p2) {P1 = p1; P2 = p2;} Point GetP1()const {return P1;} Point GetP2()const {return P2;} private: Point P1; Point P2;

10 10 FEKT VUT v Brně }; A nakonec třída pro objekt typu trojúhelník class Triangle, který využívá jak objektů třídy Point, tak i Line: // CLASS TRIANGLE class Triangle // points P1, P2, P3 { public: void SetTriangle(Point p1, Point p2, Point p3); Line GetL12()const {return L12;} Line GetL23()const {return L23;} Line GetL31()const {return L31;} private: Point P1; Point P2; Point P3; Line L12; Line L23; Line L31; }; void Triangle::SetTriangle(Point p1, Point p2, Point p3) { P1 = p1; P2 = p2; P3 = p3; L12.SetLine(P1, P2); L23.SetLine(P2, P3); L31.SetLine(P3, P1); } Prostudujte uvedený zdrojový kód, především pak provázanost objektů daných tříd. Všechny tyto třídy mají nadefinovány potřebné přístupové metody pro nastvaní a zjištění proměnných příslušných objektů. Poslední deklarovanou třídou je class Canvas, která reprezentuje kreslící plátno s definovatelnými rozměry: // CLASS CANVAS class Canvas // height, width, array of character as a pixels of canvas { public: int SetCanvas(uch width, uch high); // set size of canvas uch GetWidth() const {return W;} // return width of canvas uch GetHeight() const {return H;} // return height of canvas void ClearCanvas(void); // clear canvas void PrintCanvas(void); // display canvas on the screen void AddFrame(char pattern); // add frame in the edges of canvas

11 Programování a počítače 2. Počítačová cvicení pro obor B-EST. 11 int AddPoint(Point point, char pattern); // add point int AddLine(Line line, char pattern); // add line int AddTriangle(Triangle tri, char pattern); // add triangle private: uch H; uch W; char Canv[200][200]; }; int Canvas::SetCanvas(unsigned char width, unsigned char height) { } void Canvas::ClearCanvas(void) { } Protože pro jednoduchost pracujeme stále v konzolových aplikacích, jeden bod (pixel) plátna je reprezentován jedním zobrazitelným znakem. Statická proměnná Canv[200][200] je výsledným 2D polem pro vkládání kreslených znaků (můžeme si představit, že představují barvu bodu nebo typ čáry). Finální rozměr plátna je určen proměnnými W a H (v příkladu rozměr 160 x 80). Ve třídě Canvas jsou kromě očekávaných metod pro inicializaci, smazání a zobrazení plátna na konzoli ještě metody pro vložení rámu na plátno a vložení výše zmíněných objektů typu bod, úsečka a trojúhelník. Poměrně komplikovaně vypadá metoda pro vložení úsečky. Důvodem je ošetření všech možností, které mohou nastat z hlediska souřadnic koncových bodů tak, aby se úsečka vykreslovala vždy správně plnou čarou. Jak bude vypadat výsledný bod (pixel) na plátně je dáno znakem pattern. Ve funkci main() je pak ukázáno vytváření objektů a volání příslušných metod předdefinovaných tříd. Výsledkem je obrázek skládající se ze tří bodů, dvou úseček a trojúhelníku (obr. 2.1). Souřadnice {0,0} jsou v levém dolním rohu (viz metoda Canvas::PrintCanvas()). Vaším úkolem je sestavit vlastní novou třídu pro obecný čtyřúhelník a ve třídě Canvas doplnit metodu pro jeho vložení na plátno. Ve funkci main() pak proveďte vygenerování a vykreslení dvou čtyřúhelníků a dvou trojúhelníku a jejich vykreslení podle obr. 2.2, volba souřadnic koncových bodů úseček není kritická. Hodnocení: 1,5 bodu. Úloha B. Zadáno cvičícím na začátku cvičení. Hodnocení: 1,5 bodu.

12 12 FEKT VUT v Brně Obr Výsledný obrázek podle vzoru z příkladu A. Obr Požadovaný výsledný obrázek využívající třídu pro obecný čtyřúhelník pro příklad A. Bonusová úloha Pro zájemce a nadšené programátory je tu opět připravená bonusová úloha, která tentokráte navazuje na úlohu A. Cílem je vytvořit třídu pro vykreslování číslic podobně jako na sedmisegmentovém displeji (nebo na kalkulačce). Vhodné je jako objekt této třídy definovat jednu číslici s umístěním a velikostí. Na obrázku 2.3 je ukázka výsledku pro různé velikosti, pro jeden pixel je použit předdefinovaný znak BLOCK. (znak s ASCII kódem 219). Výhodné je si v třídě pro digitální číslo definovat proměnnou typu char, jejíž jednotlivé bity

13 Programování a počítače 2. Počítačová cvicení pro obor B-EST. 13 budou odpovídat příslušným segmentům (bude-li daný bit roven 1 bude segment vykreslen, v případě, že bude tento bit roven hodnotě 0, příslušný segment vykreslen nebude). Překódování číslice do této proměnné je možné provádět přímo při inicializaci proměnných vytvořeného objektu a pak předávat vykreslovací metodě ve třídě Canvas. Kontrolní otázky Obr Příklad výsledku bonusové úlohy. 2.1) Co způsobí následující kód ve funkci main(): Point P; int ax; ax = P.X;? Předpokládáme, že třída Point je definována shodně jako v úloze A. 2.2) K čemu slouží modifikátor const v hlavičce metody, např. uch GetX()const;? 2.3) Jaké členy (položky) byste definovali ve třídě pro objekt typu kružnice a současně typu kruhu? Literatura [2.1] WRÓBLEWSKI, P. Algoritmy. Datové struktury a programovací techniky. Brno: Computer Press, [2.2] VIRIUS, M. Od C k C++. České Budějovice: KOOP nakladatelství, [2.3] PROKOP, J. Algoritmy v jazyku C a C++. Praha: GRADA, Přetížení členských metod tříd a dědičnost Cílem je seznámit se dalšími atributy objektového programování, které jsou zaměřené na přetěžování členských metod a využitím dědičnosti.

14 14 FEKT VUT v Brně Úloha A. Pro tuto úlohu je připraven zdrojový kódu rozpracovaného programu k příkladu v souboru bpc2e_c03a.cpp. Úloha řeší jednoduchý objektový projekt pro správu studentů. V uvedeném zdrojovém souboru je nejprve vytvořena třídy class Date pro objekt typu datum: // CLASS DATE class Date // day, month, year { public: int SetDate(char* new_date); // in form DD.MM.YYYY char* GetDate() const; int GetDayVal() const {return Day + 31*Month + 366*Year;} protected: int Day; int Month; int Year; }; int Date::SetDate(char *new_date) { } char* Date::GetDate() const { } a následně třída class PersID pro objekt typu rodné číslo: // CLASS PERSID class PersID:public Date // child of Date + Tail, Sex { public: int SetPID(char* new_pid); char* GetPID() const; char GetSex() const {return Sex;} private: int Tail; // PID tail char Sex; // Sex 'f' - woman, 'm' - man }; int PersID::SetPID(char *new_pid) { }

15 Programování a počítače 2. Počítačová cvicení pro obor B-EST. 15 char* PersID::GetPID() const { } Ze zdrojového textu programu je patrné, že třída PersID je vytvořena jako dědic třídy Date. Je to logické, protože rodné číslo nese datum narození a doplňující unikátní čtyřmístné číslo (za lomítkem). V obou třídách jsou připraveny přístupové metody zahrnující komplexní ochranu vstupujících dat (až na kontrolu 29. února v nepřestupné roky). Vašim prvním úkolem je doplnit třídu Date o přetíženou funkci (metodu) pro nastavení vstupního data. V třídě je vyřešena funkce pro nastavení data zadaného jako řetězec v klasickém tvaru DD.MM.YYYY, (kde DD je číselná hodnota dne v měsíci, MM je pořadí měsíce v roce a YYYY je rok. Hlavička této metody je následující: int Date::SetDate(char *new_date); Doplňte tedy třídu Date o přetíženou metodu, která je přístupovou metodou pro nastavení položek data, přičemž den, měsíc a rok jsou tři nezávislé parametry metody. Hlavička takové přetížené metody by měla mít tvar: int Date::SetDate(int new_d, int new_m, int new_y); V této metodě proveďte podobné ošetření jako v případě již definované metody int Date::SetDate(char *new_date). Ve funkci main() pak ověřte, že obě přetížené metody jsou funkční. Například při následujícím testu: char txt1[100]; Date D; // object of date D.SetDate(" "); strcpy(txt1, D.GetDate()); cout << endl << txt1 << endl; D.SetDate(12, 12, 2000); strcpy(txt1, D.GetDate()); cout << endl << txt1 << endl; by se měly všechny položky data u obou objektů správně vložit a výsledkem by měl být výpis podle obrázku 3.1. Obr Výpis dat zadaných různými způsoby pomocí přetížených metod do objektu typu Date. Prozatím nepoužitý kód zakomentujte blokovým komentářem /* */). Dále si prostudujte příklad vytvoření potomka třídy PersID z rodičovské třídy Date. To se totiž bude hodit ve druhé části úkolu, kdy je třeba z definované třídy Person (osoba) vytvořit dědičnou třídu

16 16 FEKT VUT v Brně Student. Třída Person obsahuje chráněné proměnné jméno, příjmení, adresa a rodné číslo (s výhodou je využito výše definované třídy PersID pozor toto není dědičnost jen využití jiné komponenty tedy třída ve třídě, někdy je to označováno jako kompozice): // CLASS PERSON class Person // FName, SName, Addr, PID { public: int SetPerson(char* new_fname, char* new_sname, char* new_addr, char* new_pid); char* GetPerson() const; // int GetBirthDateVal() const; protected: char FName[10]; char SName[10]; char Addr[30]; PersID PID; }; int Person::SetPerson(char* new_fname, char* new_sname, char* new_addr, char* new_pid) { } char* Person::GetPerson() const { } Odvozená třída Student pak má privátní položky Spec (obor), SYear (rok studia), Qual (el. kvalifikace získaný paragraf) a datum platnosti kvalifikace QValid (opět třída Date ve třídě): // CLASS STUDENT class Student // child of Person + Spec, SYear, Qual, QValid { public: // ADD METHODS private: char Spec[6]; // specialization, e.g. BEST int SYear; // study year int Qual; // degree (paragraph) of el. qualification Date QValid; // date of validity of el. qualification }; // TO DO METHODS

17 Programování a počítače 2. Počítačová cvicení pro obor B-EST. 17 Vaším úkolem je, jak je patrné z uvedeného zdrojového kódu pro třídu Student, definovat kýženou dědičnost a doplnit přístupové metody podobně jako v případě třídy Person. Použití přístupových metod je patrné z funkce main(), kde je nadeklarováno fixně 10 studentů v poli Student S[10] (jde tedy o pole objektů). Všechny datové položky (členy) jsou ve funkci main() naplněny, níže je uveden příklad pro prvního studenta Jaroslava Nováka s indexem 0: S[0].SetPerson("Jaroslav", "Novak", "V lesiku 128 ", "960105/1361"); S[0].SetStudent("BEST", 1, 4, " "); V metodě SetStudent() se již využívá nové přetížené metody pro nastavení data. V reálném použití by se mohly údaje o studentech načítat ze souboru a noví studenti přidávat z klávesnice a pochopitelně s dynamickým přidáváním objektů typu student. V funkci main() je rovněž připraven cyklus, který vytiskne údaje o všech studentech: cout << endl << "List of students:" << endl; for(i = 0; i < num_st; i++) { strcpy(txt1, S[i].GetPerson()); strcpy(txt2, S[i].GetStudent()); cout << i+1 << ". " << "\t" << txt1 << " " << txt2 << endl; } Ze zdrojového kódu je tedy zřejmé, že je nutné sestavit přístupové metody třídy Student, a to pro vkládání dat do objektu typu Student metodu SetStudent() a pro čtení dat z objektu typu Student metodu GetStudent(). Obě tyto metody přistupují pouze k novým členům ve třídě Student, pro děděné členy lze s výhodou použít metody ze třídy Person. Po správném doplnění kódu příkladu byste měli získat výpis studentů s údaji podle obrázku 3.2. Obr Výpis seznamu studentů včetně osobních a studijních údajů pro příklad A. Hodnocení: 1,5 bodu. Úloha B. Zadáno cvičícím na začátku cvičení. Hodnocení: 1,5 bodu.

18 18 FEKT VUT v Brně Bonusová úloha Pro doplňující bonusovou úlohu byla vybrána klasická aplikace výběru objektů na základě hodnoty jednoho vybraného parametru (člena) objektu. Pro řešení tohoto úkolu je již potřeba mít k dispozici hotové řešení zadání A. Cílem je doplnit funkci main() o algoritmus, který na základě zadané el. kvalifikace (získaný paragraf studentem) vypíše pouze studenty, kteří mají el. kvalifikaci shodnou se zadanou hodnotou. Pro zadání výběrové el. kvalifikace využijte standardní vstup cin. Vzor kódu je uveden níže, přičemž stačí nasměrovat vstup do deklarované celočíselné proměnné: int num; cout << "Insert par. of el. qualification: "; cin >> num; Doplňte tedy funkci main() o výběr studentů dle požadované el. kvalifikace. S výhodou využijte přístupové inline metody GetQual(). Studenty splňující zadané kritérium el. kvalifikace včetně jejich personálních a studijních údajů vytiskněte. Příklad výpisu pro zadanou kvalifikaci s paragrafem 4 je uveden na obrázku 3.3. Obr Výpis seznamu studentů včetně osobních a studijních údajů, kteří mají el. kvalifikaci dle paragrafu 4. Kontrolní otázky 3.1) Jak program pozná, kterou z přetížených metod má v dané situaci použít? 3.2) Jakým způsobem lze ověřit správné zadání rodného čísla? 3.3) Jakým způsobem lze modifikovat zděděnou členskou metodu? Literatura [3.1] DOSTÁL, R. C/C++. Hotová řešení. Brno: Computer Press, [3.2] VIRIUS, M. Od C k C++. České Budějovice: KOOP nakladatelství, [3.3] PROKOP, J. Algoritmy v jazyku C a C++. Praha: GRADA, Formulářová aplikace v C++ pro Windows Cílem je seznámit se s vytvářením jednoduchých aplikací v C++ typu WindowsForm pro OS Windows s využitím integrovaného prostředí Microsoft Visual Studia.

19 Programování a počítače 2. Počítačová cvicení pro obor B-EST. 19 Úloha A. Pro tuto úlohu tentokrát nejsou připraveny žádné zdrojové kódy. Cílem je, abyste si vyzkoušeli kompletní návrh jednoduchého projektu v MSVS2013, počínaje nastavení formulářové aplikace, přes definici vizuální podoby programu, až po doplnění automaticky vygenerovaného kódu k vizuální podobě programu o požadované ošetření událostí (vlastní metody pro dané ovládací prvky). Požadovaná aplikace by měla být jednoduchou kalkulačkou pro komplexní čísla se základními operacemi pro dvě komplexní čísla (součet, rozdíl, násobek a podíl). Připravte si v MSVS 2013 (případně i jiné verzi) projekt formulářové aplikace typu WidowsForm (podle postupu z přednášek). Ve druhém kroku vytvořte vizuální podobu formuláře aplikací vhodných ovládacích prvků (inspirujte se projektem BPC2E_Ex114 z přednášek). Bude potřeba ve formuláři aplikace definovat čtyři editační okna (TextBox) pro vstup reálné a imaginární části dvou vstupních čísel (např. A a B) a 2 textová pole (Label) pro zobrazení výsledku operace. Další textová pole je vhodné definovat pro pomocné texty jako je real., imag. apod. Formulář dále doplňte o čtyři tlačítka pro jednotlivé matematické operace. V závěrečné fázi doplňte projekt o metody událostí kliknutí na tlačítka pro jednotlivé matematické operace. Tedy pro implementovaná tlačítka vygenerujte funkce pro ošetření události kliknutí na tlačítko metody OnClick, do nichž vložte kód pro načtení hodnot vstupních čísel z editačních oken, výpočet dané komplexní operace voláním vaší knihovní funkce a zobrazení výsledků v textových polích. Pro čtení hodnot z editačních TextBoxů a pro tisk hodnot do textových polí výsledků Label je výhodné sestavit jednoduché funkce (podobně jako ve vzorovém projektu z přednášky BPC2E_Ex114). V těchto funkcích je potřeba použít konverzi proměnné objektového řetězce třídy String na vhodný číselný formát, např. double. K tomuto účelu lze využít konverzní metody ToDouble, jejímž parametrem je položka ovládacích prvku nesoucí řetězec typu String, například takto: A_real = System::Convert::ToDouble(this->text_Are->Text); kde A_real je proměnná typu double, do níž konvertujeme řetězec z TextBoxu text_are (editační okno pro reálnou část prvního operandu) a Text je položka nesoucí řetězec zapsaný do daného editačního okna, který je typu String. Protože při operacích nad komplexními čísly jsou výsledkem dvě hodnoty, reálná a imaginární část výsledné hodnoty, použijte v knihovních funkcích pro výpočty nad komplexními čísly předávání výsledku odkazem. Volání takové knihovní funkce může vypadat například takto: cmul(&re, &im, get_are(), get_aim(), get_bre(), get_bim()); Proměnné re a im jsou výstupy komplexní operace a funkce get_xyy() zajišťují návratové hodnoty typu double, které jsou konvertovány z řetězců typu String z editačních oken. Číselné hodnoty re a im je pak třeba překonvertovat pomocí metody ToString() na typ String pro zobrazení v příslušném grafickém objektu na formuláři aplikace (u objektu typu Label je cílem položka Text): this->resre->text = System::Convert::ToString(re); kde Resre je objekt typu Label. Příklad funkční podoby formulářové aplikace je uveden na obrázku 4.1.

20 20 FEKT VUT v Brně Hodnocení: 1,5 bodu. Úloha B. Obr Příklad formulářového okna pro komplexní kalkulačku. Zadáno cvičícím na začátku cvičení. Hodnocení: 1,5 bodu. Bonusová úloha Sestavte jednoduchou formulářovou aplikaci pro Windows, která náhodně vygeneruje losování dvou tahů sportky. Připravte si vhodný formulář, který bude obsahovat dvě tlačítka pro spuštění náhodného generování a textová pole label pro jednotlivá vylosovaná čísla. V projektu rovněž sestavte nezávislou funkci, která vygeneruje vektor sedmi celých čísel v rozsahu 1 až 49, přičemž žádné se nesmí opakovat. Použijte starý známý algoritmus z jazyka C s aplikací funkcí srand() a rand() z knihovny stdio.h a pomocné funkce time(null) z knihovny time.h pro vstupní hodnotu inicializace semínka náhodného generátoru. Pro jednoduchost můžete tuto pomocnou funkci vložit přímo do hlavičkového souboru formuláře za #pragma endregion. Protože generujete vektor sedmi čísel, musíte použít předávání tohoto vektoru odkazem. V této funkci současně proveďte i třídění pro prvních šest čísel od nejmenšího po největší (dodatkové na sedmé pozici nesmí být zahrnuto) tak, aby zobrazení vylosovaných čísel vypadalo podobně jako u zobrazení rekapitulace losování v televizním přenosu. Jako reakci na stisk tlačítka zavolejte uvedenou funkci a výsledná tažená čísla vložte do příslušných objektů label. Výsledné okno aplikace s vygenerovanými tahy sportky je uvedeno na obrázku 4.2. Je možné si ze cvičných důvodů nadefinovat i vlastní jiný formulář aplikace. Kontrolní otázky Obr Příklad zobrazení výsledků generátoru pro sportku ve formuláři. 4.1) Proč se ve formulářové aplikaci pro kalkulačku nad komplexními čísly používá ke zobrazení racionálního čísla desetinná čárka? 4.2) Bylo by vhodné pro nějaký účel definovat ve formulářové aplikaci pro kalkulačku nad komplexními čísly určitou vlastní třídu? Popište její členy a metody.

21 Programování a počítače 2. Počítačová cvicení pro obor B-EST ) K čemu slouží ve zdrojovém kódu hlavičkového souboru formuláře kód using namespace? Literatura [4.1] DOSTÁL, R. C/C++. Hotová řešení. Brno: Computer Press, [4.2] FORD, S. 266 tipů a triků pro Microsoft Visual Studio. Brno: Computer Press, [4.3] VIRIUS, M. Od C k C++. České Budějovice: KOOP nakladatelství, Grafická aplikace pro Windows s ovladačem GDI Cílem cvičení je procvičit si práci s 2D grafickým ovladačem GDI, který je nejjednodušším nástrojem pro tvorbu grafických aplikací ve Windows. Úloha A. Sestavte a odlaďte aplikaci jednoduché formulářové aplikace pro Windows, ve které se bude graficky zobrazovat průběh měsíčních teplot během zvoleného roku. Vaším prvním dílčím úkolem je doplnit funkci pro načtení teplot GetTemp(), která je připravena v knihovně temp.h a která využívá globální proměnnou double temp[16][12], definující pole teplot s průměrnými měsíčními teplotami od roku 1995 (první řádek, sloupce jsou měsíce). Připravený formulář aplikace MyForm.h obsahuje objekt typu NumericUpDown pojmenovaný NUD pro definici roku (od 1995 do 2010 včetně). Formulář aplikace dále obsahuje objekt typu PictureBox se jménem PB pro zobrazení teplotního grafu (viz obr. 5.1). Ten má již předpřipravené grafické výstupy pro tisk mřížky tabulky s popisem os ve funkci pro událost Paint(): System::Void PB_Paint(System::Object^ sender, System ::PaintEventArgs^ e) { int n, year; double temp[12]; array<point>^ GraphPoints = gcnew array<point>(12); Graphics ^ g = e->graphics; Pen^ GridPen = gcnew Pen(Color::Black,1.0f); Pen^ FramePen = gcnew Pen(Color::Black,3.0f); SolidBrush^ PointBrush = gcnew SolidBrush(Color::Blue); Pen^ GraphPen = gcnew Pen(Color::Blue,2.0f); System::Drawing::Font^TextFont = gcnew System::Drawing::Font("Arial", 12); SolidBrush^ TextBrush = gcnew SolidBrush( Color::Black ); e->graphics->drawrectangle(framepen, 100, 50, 550, 300); // frame for (n=0; n<12; n++) // vertical lines e->graphics->drawline(gridpen, 100+n*50, 50, 100+n*50, 355);

22 22 FEKT VUT v Brně e->graphics->drawstring("jan", TextFont, TextBrush, 80, 360); for (n=0; n<13; n++) // horizontal lines e->graphics->drawline(gridpen, 95, 50+n*25, 650, 50+n*25); e->graphics->drawstring("+40 C", TextFont, TextBrush, 40, 40); } // to do - printing temperature curve V první části jsou nadefinovány objekty kreslících nástrojů, jako jsou pera, štětce a fonty písma. Následuje vykreslení obdélníku pro umístění grafu a systém vertikálních a horizontálních čar definujících mřížku grafu. K příslušným čarám jsou pak dodefinovány texty pro zkratky měsíců a hodnoty teplot. Tuto část je možné dále zjednodušit definicí pole řetězců a aplikací cyklu. Pro názornost je ponecháno uvedené řešení s výpisem jednotlivých textů nezávisle. Váš další úkol je doplnění této funkce o zobrazení průběhu teploty pro daný rok, kód se umístí místo komentáře // to do - printing temperature curve. Pro vykreslení využijte metodu e DrawCurve(), která křivku teplot automaticky vyhladí pomocí metody splinů. Tato metoda má jeden ze vstupních parametrů pole bodů array<point>^ (tedy pole bodů, kterými bude křivka proložena). Toto pole bodů je třeba nejprve deklarovat následujícím způsobem: array<point>^ GraphPoints = gcnew array<point>(12); Touto konstrukcí je deklarováno pole bodů s názvem GraphPoints s počtem dvanácti bodů (počet bodů křivky je v kulatých závorkách). K jednotlivým položkám pak přistupujeme standardně jako u pole struktur nebo objektů (objekt Point obsahuje dvě položky X (souřadnice bodu x) a Y (souřadnice bodu y), např. GraphPoints[3].X = 120; vloží na pozici souřadnice x třetího (resp. čtvrtého) bodu hodnotu 120. Přepočet teplot a měsíců na souřadnice proveďte na základě rozboru kódu pro generování mřížky tabulky. Při vykreslování grafu vhodným způsobem zvýrazněte prokládané body např. pomocí metody FillEllipse(). Posledním úkolem je sestavení funkce pro událost změny roku v NUD, kde je třeba vždy při změně volat překreslení grafu s teplotami pro vybraný rok konstrukcí: this->pb1->refresh(); kde PB je objekt příslušné PictureBoxu, který chceme překreslit. Voláním této metody se zavolá výše uvedená funkce PB_Paint() a provede se komplexní překreslení grafu.

23 Programování a počítače 2. Počítačová cvicení pro obor B-EST. 23 Obr Grafické zobrazení průběhu teplot v roce Hodnocení: 1,5 bodu. Úloha B. Zadáno cvičícím na začátku cvičení. Hodnocení: 1,5 bodu. Bonusová úloha Upravte úlohu podle zadání A tak, abyste získali zobrazování teplotního grafu pomocí sloupcového (bar) grafu a to včetně výpisu příslušné teplotě k danému sloupci. Teploty větší než 0 C se budou zobrazovat červenými sloupci nad hodnotou 0 C a teploty záporné modrými sloupci pod úrovní 0 C. Příklad grafického výstupu je uveden na obrázku 2. Nejlépe je ve formuláři projektu z úlohy A vytvořit nový druhý objekt typu PictureBox a sloupcové grafy vykreslovat současně s teplotní křivkou. Pro sloupcové grafy využijte metodu FillRectangle(). Pokud chcete i teplotu číselně vypsat nad, případně pod, sloupec, využijte opět metodu DrawString(), přičemž požadovaný řetězec typu String z hodnoty v poli teplot temp[] získáte aplikací konverzní metody ToString: temp[n].tostring(" 0.0") kde n je index vypisovaného prvku pole a jako parametr je uveden řetězec specifikující požadovaný formát (rozlišení čísla) po konverzi (v našem případě výpis na jedno desetinné místo).

24 24 FEKT VUT v Brně Obr Grafické zobrazení průběhu teplot v roce 2008 pomocí sloupcového grafu. Kontrolní otázky 5.1) Popište, co definují parametry v metodě: Pen^ GridPen = gcnew Pen(Color::Black,1.0f);? 5.2) K čemu slouží metoda Refresh() v objektech typu PictureBox? 5.3) Proč jsou při volání metod při kreslení grafických objektů použity šipky, např. e->graphics->drawrectangle(framepen, 100, 50, 550, 300);? Literatura [5.1] ECKEL, B. Myslíme v jazyku C++. Knihovna programátora. Praha: GRADA, [5.2] FORD, S. 266 tipů a triků pro Microsoft Visual Studio. Brno: Computer Press, [5.3] VIRIUS, M. Od C k C++. České Budějovice: KOOP nakladatelství, Manipulace s maticemi a 2D grafy v Matlabu Cílem cvičení je procvičit si manipulaci s maticemi a vektory v Matlabu a sestavování a 2D grafů. Úloha A. Sestavte matlabovský skript, který vygeneruje tři grafy vycházející ze změřených průměrných teplot za určité období. V předpřipraveném skriptu bpc2e_c06.m je definována matice Temp obsahující průměrné měsíční teplotami od roku 1995 (první řádek, sloupce jsou měsíce) měřené ve 13 h na jisté meteorologické stanici. Dále je ve skriptu definován vektor LTAvT obsahující dvanáct hodnot průměrných měsíčních teplot z dlouhodobého měření. V první fázi upravte teploty v tabulce Temp v osmém řádku od měsíce března do září včetně o deset stupňů Celsia níže. V této době byl měřicí systém porouchaný a měřil teploty o 10 C vyšší. Úpravu proveďte jednoduše pomocí standardní

25 Programování a počítače 2. Počítačová cvicení pro obor B-EST. 25 dvojtečkové notace. Dalším podúkolem je vygenerování grafu (viz obr. 6.1), kde budou vyneseny všechny závislosti naměřené teploty v průběhu 12 měsíců pro všechny roky měření z tabulky Temp do společného grafu modrou křivkou a současně červeně vyneste křivku průměrné měsíční teploty z uvedeného měření. Nepoužívejte žádné konstrukce cyklů a využijte výhod Matlabu pro manipulaci s maticemi. Modré křivky v grafu lze vygenerovat jen jedním voláním funkce plot(). Pro červenou křivku bude nutné volat funkci plot() podruhé. Aby se červený graf vykreslil do stejného grafu s modrými křivkami a přitom nedošlo k překreslení celého grafu s modrými křivkami, nastavte před vynášením červené křivky atribut grafu hold na hodnotu on. Po vykreslení červené křivky průměrné hodnoty teploty nastavte atribut hold opět na off. Pro výpočet průměrné hodnoty teploty aplikujte funkci sum(). Dále vygenerujte druhý graf, který zobrazí teploty pro všechny měsíce měřeného období za sebou (modře) a rovněž odchylku od dlouhodobého průměru (zelená křivka), viz obr Pro tento úkol použijte funkci reshape() na pole Temp. Obr Grafické zobrazení měsíčních teplot pro všechny roky. Obr Grafické zobrazení měsíčních teplot a odchylek od dlouhodobého průměru za sebou.

26 26 FEKT VUT v Brně Opět se vyhýbejte aplikaci cyklů, v Matlabu ztrácejí často smysl a zbytečně prodlužují výpočty. U obou grafů specifikujte další parametry jako jsou mřížky, popisy os i název grafu. Pro definici rozsahu vykreslení x-ové osy můžete použít funkci xlim(), popis najdete v nápovědě Matlabu. Standardně si Matlab volí rozsah os sám, někdy to však kazí interpretaci grafických výsledků. Hodnocení: 1,5 bodu. Úloha B. Zadáno cvičícím na začátku cvičení. Hodnocení: 1,5 bodu. Bonusová úloha Vykreslete bodový graf odchylek od dlouhodobého průměru pro jednotlivé měsíce pro měřené období (modré kroužky) a rovněž průměrnou hodnotu odchylky tečkovanou červenou křivkou se čtvercovými body, viz obr Obr Grafické zobrazení měsíčních odchylek teplot pro všechny roky a průměrná odchylka. Kontrolní otázky 6.1) K čemu slouží příkaz hold u definice grafů? 6.2) Co provede následující konstrukce v Matlabu: A = reshape(b',1,[]);? 6.3) Co provede následující konstrukce v Matlabu: A = B(2:4,5:6);?

27 Programování a počítače 2. Počítačová cvicení pro obor B-EST. 27 Literatura [6.1] DOŇAR, B., ZAPLATÍLEK, K. MATLAB pro začátečníky. Praha: BEN Technická literatura, [6.2] KATTAN, P. I. MATLAB for Beginners. A Gentle Approach. Lousiana: Peter I. Kattan, Model fyzikálního jevu a 3D grafy v Matlabu Cílem cvičení je procvičit si práci s 3D grafy v Matlabu. Úloha A. Sestavte matlabovský skript, který vygeneruje graf závislosti dálky šikmého vrhu jako 3D graf pro parametry počáteční rychlosti v rozsahu od 0 do 100 km/h a pro počáteční úhel šikmého vrhu v rozsahu 0 do 90. Pro dálku šikmého vrhu odvozením podle obrázku 7.1 platí: d v 2 0 sin 2α g = (7.1) kde g je tíhové zrychlení na povrchu Země 9,81 m/s 2. Skript musí generovat tři typy 3D grafů: povrchový (pomocí funkce surf(), viz obr. 7.3), síťový (pomocí funkce mesh(), viz obr. 7.4) a konturový (pomocí funkce contour(), viz obr. 7.5). Obr Šikmý vrh situační nákres. Obecně funkce mesh(), surf() a contour() mají tři parametry, případně čtyři při využití neprimární palety barev. Např. funkce surf(x, Y, Z, C) vykreslí povrchový graf Z = f(x,y), kde X, Y jsou matice vygenerované funkcí meshgrid(), Z je matice výsledné 3D funkce. C definuje barevnou paletu, není-li definováno, použije se aktuální, jak bylo uvedeno výše. Matice X a Y vygenerované funkcí meshgrid() určují síť bodů, které se pak mohou použít jako vstupní hodnoty pro výpočet funkce. Tzn., že tyto matice mají rozměr podle zvolené mřížky a jednotlivé prvky pole obsahují skutečné vstupní hodnoty pro danou proměnnou. Matice X má pak pro daný sloupec všechny hodnoty stejné odpovídající hodnotě x v kartézské souřadné soustavě. Obdobně matice Y má pro daný řádek všechny

28 28 FEKT VUT v Brně hodnoty stejné odpovídající hodnotě y v kartézské souřadné soustavě. Níže je uveden příklad, který vygeneruje povrchový graf funkce z = x 2 +y 2 včetně aplikace funkce meshgrid(), titulku grafu a popisu os a to se standardní barevnou paletou, výsledek je na obrázku 7.2: [x,y] = meshgrid(-5:0.1:5); Z = x.^2+y.^2; figure() surf(x,y,z) title('z=x^2+y^2') xlabel('x') ylabel('y') zlabel('z') z=x 2 +y z y -5-5 x Obr Povrchový graf pro skript z příkladu. d = f(v0, alfa) d [m] alfa [ ] 0 v0 [km/h] Obr Povrchový graf pro dálku šikmého vrhu.

29 60 Programování a počítače 2. Počítačová cvicení pro obor B-EST. 29 d = f(v0, alfa) d [m] alfa [ ] 0 0 v0 [km/h] Obr Síťový graf pro dálku šikmého vrhu. Velikost ok mřížky je třeba volit rozumně tak, aby graf nebyl příliš diskretizovaný a současně aby nebyla síť tak hustá, že se slijí hrany (sítě) černé barvy v jeden černý obraz. Barevnou intenzitní paletu ve formě sloupku pro osu z lze aktivovat příkazem colorbar. 90 d = f(v0, alfa) alfa [ ] v0 [km/h] Obr Konturový graf pro dálku šikmého vrhu. Hodnocení: 1,5 bodu. Úloha B. Zadáno cvičícím na začátku cvičení. Hodnocení: 1,5 bodu.

30 30 FEKT VUT v Brně Bonusová úloha Vygenerujte smíšený graf závislosti dálky šikmého vrhu podle zadání A obsahující síťový graf spolu s konturovým pomocí funkce meshc(). Výsledek je zřejmý z obrázku 7.6. Upravte rovněž barevnou paletu podle obrázku. Barvy jsou vzestupně plná černá, plná modrá, plná zelená a plná červená. Nezapomeňte i na popisy os a titulek grafu. d = f(v0, alfa) d [m] Kontrolní otázky alfa [ ] v0 [km/h] Obr Kombinovaný graf síťový a konturový. 7.1) Jakou barvu bude mít graf, pokud bude ve skriptu pro generování u grafu definována barevná paleta následovně: colormap([0 1 0])? 7.2) Jak lze nastavit osu z u grafu tak, aby rozsah osy z odpovídal přesně od minma do maxima funkční hodnoty Z (Z je matice výsledné dvourozměrné funkce)? 7.3) Co zajistí u 2D grafu příkaz hidden off? Literatura [7.1] DOŇAR, B., ZAPLATÍLEK, K. MATLAB pro začátečníky. Praha: BEN Technická literatura, [7.2] KATTAN, P. I. MATLAB for Beginners. A Gentle Approach. Lousiana: Peter I. Kattan, Parametrické 3D grafy v Matlabu Cílem cvičení je procvičit si práci se soubory a parametrickými 3D grafy v Matlabu. Úloha A. Protože budete řešit transformaci z kartézských do sférických souřadnic, ve kterých budete vykreslovat grafy, resp. objekty, jako parametrické 3D funkce s definicí barvy povrchu a protože to představuje jistou představivost ve 3D prostoru a tedy pro matlabovské začátečníky jistý obtížný kousek, je součástí zadání i názorný příklad, viz bpc2e_c08ex.m.

31 Programování a počítače 2. Počítačová cvicení pro obor B-EST. 31 V tomto příkladu je nejprve pomocí meshgridu vytvořena sít v kartézské soustavě, kde lon (zeměpisku délka) koresponduje s osou x a lat (zeměpisná šířka) s osou y: [lon,lat] = meshgrid(-180:0.5:180, -90:0.5:90); Máme tedy síť, která má definovaná oka s délkou 0,5 a je položená na rovné zemi (v soustavě x, y). Následně je vygenerována matice c jako funkce lon+lat, to znamená, že její hodnota bude stoupat s rostoucí hodnotou lon i lat: c = lon+lat; Pro nízké indexy řádků i sloupců se budou její hodnoty pohybovat okolo -270, tedy (- 90), naopak pro nejvyšší indexy se budou hodnoty v matici C blížit Pokud použijeme následující skript pro vykreslení síťového grafu pomocí funkce mesh(): figure(1) mesh(lon,lat,0*lon,c) xlabel('lon') ylabel('lat') axis equal colormap('lines') view(0,90) získáme graf 8.1. Souřadnice x a y tedy odpovídají lon i lat. Třetí matice odpovídající ose z je nulová (násobení je zde kvůli zajištění rozměru nulové matice). Ve funkci mash() matice c figuruje jako čtvrtý parametr, což znamená, že hodnotou c pro dané lon a lat je nějaká barva z vybrané palety. Protože je z vždy nulové graf leží v rovině xy a jenom se mění jeho barva podle matice c a vybrané palety colormap(). Pro ilustraci je vybrána paleta Lines, proto tolik proužků, ale zkuste si jinou paletu, např. Winter, která lépe ukáže, jak roste c pro dané místo (souřadnice) sítě umístěné v rovině xy. Máme tedy vytvořen určitý vzor, který je rozložený na podlaze (z = 0) jako koberec. A nyní přichází kýžená transformace, kdy pro parametry lon a lat definujeme transformované proměnné x, y a z ve sférických souřadnicích. Z hlediska představivosti jde jen o to, že vezmeme původní síť (koberec položený na zemi) a stočíme jej do koule, přičemž musíme někde oka (koberec) trochu roztáhnout, jinde přitlačit k sobě. Výsledkem je kouli v 3D soustavě a příslušné barevné proužky teď figurují na povrchu koule. V našem případě máme poloměr koule r = 1, obecně však pro uvedenou transformaci platí: x = r cos( α) cos( β ) y = r sin( α) cos( β ) z = r sin( β ) (8.1) kde α odpovídá námi definované proměnné lon a β proměnné lat. Hodnota r určuje poloměr výsledné koule. V testovacím příkladě je síť tak hustá, že se nám jednotlivé hrany slévají dohromady. Zkuste navrhnout síť řidší a uvidíte, že transformace do koule v některých místech oka roztáhne a jinde smrskne (to je kvůli sinům a kosinům v transformačním vztahu).

32 32 FEKT VUT v Brně Obr Barevný plot na zemi. Sestavíme-li skript pro transformaci kulových souřadnic: x = cos(lon*pi/180).*cos(lat*pi/180); y = sin(lon*pi/180).*cos(lat*pi/180); z = sin(lat*pi/180); a aplikujeme již skutečné 3D zobrazení (z již není nulové, viz třetí vztah v transformaci) pomocí funkce mesh(): figure(2) mesh(x,y,z,c) title('striped ball') xlabel('x') ylabel('y') zlabel('z') axis equal colormap('lines') view(45,20) Získáme krásnou barevnou mičudu, na které je vidět zhuštění původního 2D zobrazení v oblasti pólů a zředění okolo rovníku. Vašim úkolem je na základě uvedeného příkladu sestavit matlabovský skript, který vygeneruje grafy rozložení teploty v severním Atlantiku. Abyste mohli oddělit oceány od souše, je k dispozici binární soubor earth.dat obsahující jednobajtové hodnoty, kdy 1 odpovídá moři a 0 souši na zemském povrchu. Rozdělení je po 0,5 jak v zeměpisné délce <- 180, +180 >, tak i v zeměpisné šířce <-90, +90 >. Řádky odpovídají zeměpisné šířce, sloupce zeměpisné délce. Sestavte skript, který zobrazí masku souší a moří Země, viz obr Jde v podstatě o řešení z ukázkového příkladu s vlastní paletou o dvou barvách. Data ze souboru masky souší a moří načtete následujícím skriptem: fid1 = fopen('earth.dat', 'r') e_mask = fread(fid1, [ ]); fclose(fid1)

33 Programování a počítače 2. Počítačová cvicení pro obor B-EST. 33 Obr Barevný plot srolovaný do mičudy pomocí transformace. Proveďte jak zobrazení rozložené do roviny xy (obr. 8.3a) tak i zobrazení po transformaci, čímž získáte vykreslený globus souší a moří. Pro další úkol je v souborech NATemp1985.dat a NATemp2010.dat uložena mapa teploty severního Atlantiku měřená v roce 1985 a 2010 v zeměpisné délce <-135, +35 > a v zeměpisné šířce <+15, +90 >. Rozdělení je opět po 0,5 a stejné uspořádání dat jako pro masku souší a moří avšak jako hodnoty ve formátu float odpovídající průměrné teplotě v daném roce. Souše mají přidělenu fixní hodnotu -10. Sestavte výřezy grafů teploty vod v severním Atlantiku pro oba roky i rozdíl (pro zjištění globálního oteplování), viz obr V závěrečné části proveďte transformace do sférických souřadnic a zobrazte teploty moří na povrchové mapě Země, u rozdílové hodnoty zobrazte jen měřenou oblast (máte jen kousek plotu na kousek koule), viz obr Pro zobrazení stačí používat funkci mesh(), protože síť je dostatečně hustá. Jak je patrné z výsledků i severní Atlantik se nám pomalu ohřívá. Kdo za to může? Obr Maska souší a moří Země.

34 34 FEKT VUT v Brně Obr Teplota moře ve 2D. Bonusová úloha V rámci bonusové úlohy upravte kód příkladu A tak, že transformaci budete definovat jako vlastní funkci. Řešení ověřte na stejných datech, musíte získat shodné výsledky. Kontrolní otázky 8.1) Kam se bude vykreslovat graf při definici: subplot(1,2,2)? 8.2) K čemu slouží příkaz: axis equal? 8.3) K čemu slouží funkce view()u zobrazování grafů jaké má parametry?

35 Programování a počítače 2. Počítačová cvicení pro obor B-EST. 35 Obr Teplota moře ve 3D. Hodnocení: 3 body. Literatura [8.1] DOŇAR, B., ZAPLATÍLEK, K. MATLAB pro začátečníky. Praha: BEN Technická literatura, [8.2] DOŇAR, B., ZAPLATÍLEK, K. MATLAB začínáme se signály. Praha: BEN Technická literatura, [8.3] KATTAN, P. I. MATLAB for Beginners. A Gentle Approach. Lousiana: Peter I. Kattan, 2009.

36 36 FEKT VUT v Brně 9 Model komunikačního systému v Matlabu Cílem cvičení je vyzkoušet si sestavit skripty v Matlabu pro model jednoduchého komunikačního systému pro přenos obrázků. Úloha A. Sestavte model komunikačního systému, který pracuje s modulací 8PSK a který přenáší komprimované BMP obrázky. Pro kompresi (zdrojové kódování) a zpětnou dekompresi (zdrojové dekódování) BMP obrázků použijte následující algoritmus: Nejprve z jednotlivých barevných složek vytvořte matici C, která je součtem všech tří RGB složek pro jednotlivé pixely (elementy matice). Následně vytvořte matici pro červenou a zelenou složku jako poměr úrovně červené ku součtu všech složek (R/C) a podobně pro zelenou matici úrovní (G/C). Pokud byste to samé provedli i pro modrou matici úrovní, součet všech třech poměrových matic by byl 1 (tedy 100%). Tzn., že poměrovou matici modré lze dopočítat z poměrových matic červené a zelené. Celá komprese spočívá v tom, že C matice nese celkovou úroveň jasu a poměrové matice procentuální zastoupení barev. Jasovou matici C podělte 3, čímž získáte rozsah pro jas 0 až 255 (osmibitovou hodnotu) pro každý pixel. Z této matice vytvořte finální matici jasu pro přenos rádiovým kanálem tak, že použijete jen šest nejvyšších bitů (jas bude komprimován na 64 úrovní). Pro poměrovou složku červené a zelené vytvořte zředěné matice tak, že obrázek rozdělíte na bloky 4x4 pixelů a budete uvažovat průměrnou poměrnou úroveň červené, resp. zelené pro tento blok pixelů. Výsledné poměrové matice budou mít 4x méně řádků i 4x méně sloupců (celková redukce je 16x). Následně tyto matice ořežte na 6 nejvyšších bitů (např. tak, že poměr 0 až 100% vynásobíte 2 6 a zanedbáte desetinnou část). Tím je hotová celá komprese. Inverzním způsobem a dopočítáním složky modré získáte zpět komprimovaný BMP obrázek, tento proces bude třeba provést po demodulaci signálu. Nejlépe bude řešit zdrojové kódování a dekódování jako vlastní matlabovské funkce, které se budou volat ve skriptu modelu. Důvod je i ten, že můžete provést test správné činnosti kompresoru a rekonstrukce komprimovaného BMP obrázku bez modulace a demodulace. Pro testování máte připravený obrázek mkid.bmp o velikosti 200 x 200 pixelů s roztomilou dětskou tvářičkou. Na obrázku 9.1a je původní BMP fotka a na obrázku 9.1b komprimovaná (rekonstruovaná). Rozdíl je takřka neznatelný, přičemž kompresní poměr je docela velký. Původní obrázek potřebuje 200x200x3x8 bitů (tři barevné složky s rozlišením 8 bitů) = bitů, komprimovaný 200x200x1x6bitů pro jas plus 50x50x2x6 bitů pro dvě poměrové barevné složky bloků 4x4 pixely, tedy celkem bitů. Kompresní poměr je / = 3,56. Obr. 9.1a. Originální fotka. Obr. 9.1b. Rekonstruovaná komprimovaná fotka.

BPC2E_C08 Parametrické 3D grafy v Matlabu

BPC2E_C08 Parametrické 3D grafy v Matlabu BPC2E_C08 Parametrické 3D grafy v Matlabu Cílem cvičení je procvičit si práci se soubory a parametrickými 3D grafy v Matlabu. Úloha A. Protože budete řešit transformaci z kartézských do sférických souřadnic,

Více

BPC2E_C09 Model komunikačního systému v Matlabu

BPC2E_C09 Model komunikačního systému v Matlabu BPCE_C9 Model komunikačního systému v Matlabu Cílem cvičení je vyzkoušet si sestavit skripty v Matlabu pro model jednoduchého komunikačního systému pro přenos obrázků. Úloha A. Sestavte model komunikačního

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

1 Základní funkce pro zpracování obrazových dat

1 Základní funkce pro zpracování obrazových dat 1 Základní funkce pro zpracování obrazových dat 1.1 Teoretický rozbor 1.1.1 Úvod do zpracování obrazu v MATLABu MATLAB je primárně určen pro zpracování a analýzu numerických dat. Pro analýzu obrazových

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

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

Programování jako nástroj porozumění matematice (seriál pro web modernivyuka.cz)

Programování jako nástroj porozumění matematice (seriál pro web modernivyuka.cz) Programování jako nástroj porozumění matematice (seriál pro web modernivyuka.cz) Autor: Radek Vystavěl Díl 8: Analytická geometrie Polární souřadnice, kružnice, elipsa, spirála MATEMATIKA Pro úlohy aplikované

Více

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu: Čtvrtek 8 prosince Pascal - opakování základů Struktura programu: 1 hlavička obsahuje název programu, použité programové jednotky (knihovny), definice konstant, deklarace proměnných, všechny použité procedury

Více

Struktury a dynamické proměnné

Struktury a dynamické proměnné BPC1E počítačové cvičení 9 Struktury a dynamické proměnné Cílem cvičení je sestavit aplikaci, která bude používat vhodnou strukturu popisující daný objekt požadovanými parametry. Navazujícím cílem je deklarovat

Více

Postupy práce se šablonami IS MPP

Postupy práce se šablonami IS MPP Postupy práce se šablonami IS MPP Modul plánování a přezkoumávání, verze 1.20 vypracovala společnost ASD Software, s.r.o. dokument ze dne 27. 3. 2013, verze 1.01 Postupy práce se šablonami IS MPP Modul

Více

Kreslení grafů v Matlabu

Kreslení grafů v Matlabu Kreslení grafů v Matlabu Pavel Provinský 3. října 2013 Instrukce: Projděte si všechny příklady. Každý příklad se snažte pochopit. Pak vymyslete a naprogramujte příklad podobný. Tím se ujistíte, že příkladu

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 do programování. Lekce 1

Úvod do programování. Lekce 1 Úvod do programování Lekce 1 Základní pojmy vytvoření spustitelného kódu editor - psaní zdrojových souborů preprocesor - zpracování zdrojových souborů (vypuštění komentářů atd.) kompilátor (compiler) -

Více

Lineární algebra s Matlabem cvičení 3

Lineární algebra s Matlabem cvičení 3 Lineární algebra s Matlabem cvičení 3 Grafika v Matlabu Základní příkazy figure o vytvoří prázdné okno grafu hold on/hold off o zapne/vypne možnost kreslení více funkcí do jednoho grafu ezplot o slouží

Více

1) Sestavte v Matlabu funkci pro stanovení výšky geoidu WGS84. 2) Sestavte v Matlabu funkci pro generování C/A kódu GPS družic.

1) Sestavte v Matlabu funkci pro stanovení výšky geoidu WGS84. 2) Sestavte v Matlabu funkci pro generování C/A kódu GPS družic. LRAR-Cp ZADÁNÍ Č. úlohy 1 Funkce pro zpracování signálu GPS 1) Sestavte v Matlabu funkci pro stanovení výšky geoidu WGS84. 2) Sestavte v Matlabu funkci pro generování C/A kódu GPS družic. ROZBOR Cílem

Více

13 Barvy a úpravy rastrového

13 Barvy a úpravy rastrového 13 Barvy a úpravy rastrového Studijní cíl Tento blok je věnován základním metodám pro úpravu rastrového obrazu, jako je např. otočení, horizontální a vertikální překlopení. Dále budo vysvětleny různé metody

Více

8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek

8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek 8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek 1/41 Základní příkazy Všechny příkazy se píšou malými písmeny! Za většinou příkazů musí být středník (;)! 2/41 Základní příkazy

Více

Programování v jazyce C a C++

Programování v jazyce C a C++ Programování v jazyce C a C++ Příklad na tvorbu třídy Richter 1 4. prosince 2017 1 Ing. Richter Miloslav, Ph.D., UAMT FEKT VUT Brno Dvourozměrné pole pomocí tříd Zadání Navrhněte a napište třídu pro realizace

Více

Rasterizace je proces při kterém se vektorově definovaná grafika konvertuje na. x 2 x 1

Rasterizace je proces při kterém se vektorově definovaná grafika konvertuje na. x 2 x 1 Kapitola 4 Rasterizace objektů Rasterizace je proces při kterém se vektorově definovaná grafika konvertuje na rastrově definované obrazy. Při zobrazení reálného modelu ve světových souřadnicích na výstupní

Více

Martin Flusser. Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague. October 17, 2016

Martin Flusser. Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague. October 17, 2016 ZPRO cvičení 2 Martin Flusser Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague October 17, 2016 Outline I 1 Outline 2 Proměnné 3 Proměnné - cvičení 4 Funkce 5 Funkce

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

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

Vyhodnocení 2D rychlostního pole metodou PIV programem Matlab (zpracoval Jan Kolínský, dle programu ing. Jana Novotného)

Vyhodnocení 2D rychlostního pole metodou PIV programem Matlab (zpracoval Jan Kolínský, dle programu ing. Jana Novotného) Vyhodnocení 2D rychlostního pole metodou PIV programem Matlab (zpracoval Jan Kolínský, dle programu ing. Jana Novotného) 1 Obecný popis metody Particle Image Velocimetry, nebo-li zkráceně PIV, je měřící

Více

X37SGS Signály a systémy

X37SGS Signály a systémy X7SGS Signály a systémy Matlab minihelp (poslední změna: 0. září 2008) 1 Základní maticové operace Vytvoření matice (vektoru) a výběr konkrétního prvku matice vytvoření matice (vektoru) oddělovač sloupců

Více

Jeden z mírně náročnějších příkladů, zaměřený na úpravu formátu buňky a především na detailnější práci s grafem (a jeho modifikacemi).

Jeden z mírně náročnějších příkladů, zaměřený na úpravu formátu buňky a především na detailnější práci s grafem (a jeho modifikacemi). Příklad zahrnuje Textová editace buněk Základní vzorce Vložené kliparty Propojené listy Grafi cká úprava buněk Složitější vzorce Vložené externí obrázky Formuláře Úprava formátu Vysoce speciální funkce

Více

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT Číslo a název šablony Číslo didaktického materiálu Druh didaktického materiálu Autor Jazyk Téma sady didaktických materiálů Téma didaktického materiálu Vyučovací předmět Cílová skupina (ročník) Úroveň

Více

Pokročilé programování v jazyce C pro chemiky (C3220) Statické proměnné a metody, šablony v C++

Pokročilé programování v jazyce C pro chemiky (C3220) Statické proměnné a metody, šablony v C++ Pokročilé programování v jazyce C pro chemiky (C3220) Statické proměnné a metody, šablony v C++ Globální konstantní proměnné Konstantní proměnné specifikujeme s klíčovým slovem const, tyto konstantní proměné

Více

GEODETICKÉ VÝPOČTY I.

GEODETICKÉ VÝPOČTY I. SPŠS Č.Budějovice Obor Geodézie a Katastr nemovitostí 2.ročník GEODETICKÉ VÝPOČTY I. TABELACE FUNKCE LINEÁRNÍ INTERPOLACE TABELACE FUNKCE Tabelace funkce se v minulosti často využívala z důvodu usnadnění

Více

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15 Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15 KAPITOLA 1 Úvod do programo vání v jazyce C++ 17 Základní pojmy 17 Proměnné a konstanty 18 Typy příkazů 18 IDE integrované vývojové

Více

7 Formátovaný výstup, třídy, objekty, pole, chyby v programech

7 Formátovaný výstup, třídy, objekty, pole, chyby v programech 7 Formátovaný výstup, třídy, objekty, pole, chyby v programech 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 formátovanému výstupu,

Více

02. HODINA. 2.1 Typy souborů a objektů. 2.2 Ovládací prvky Label a TextBox

02. HODINA. 2.1 Typy souborů a objektů. 2.2 Ovládací prvky Label a TextBox 02. HODINA Obsah: 1. Typy souborů a objektů 2. Ovládací prvky Label a TextBox 3. Základní příkazy a vlastnosti ovládacích prvků 4. Práce s objekty (ovládací prvky a jejich vlastnosti) 2.1 Typy souborů

Více

Operační systémy. Cvičení 3: Programování v C pod Unixem

Operační systémy. Cvičení 3: Programování v C pod Unixem Operační systémy Cvičení 3: Programování v C pod Unixem 1 Obsah cvičení Editace zdrojového kódu Překlad zdrojového kódu Základní datové typy, struktura, ukazatel, pole Načtení vstupních dat Poznámka: uvedené

Více

Návod k použití softwaru Solar Viewer 3D

Návod k použití softwaru Solar Viewer 3D Návod k použití softwaru Solar Viewer 3D Software byl vyvinut v rámci grantového projektu Technologie a systém určující fyzikální a prostorové charakteristiky pro ochranu a tvorbu životního prostředí a

Více

Programování v jazyku LOGO - úvod

Programování v jazyku LOGO - úvod Programování v jazyku LOGO - úvod Programovací jazyk LOGO je určen pro výuku algoritmizace především pro děti školou povinné. Programovací jazyk pracuje v grafickém prostředí, přičemž jednou z jeho podstatných

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

15. Projekt Kalkulačka

15. Projekt Kalkulačka Projekt Kalkulačka strana 143 15. Projekt Kalkulačka 15.1. Základní popis, zadání úkolu Pracujeme na projektu Kalkulačka, který je ke stažení na java.vse.cz. Po otevření v BlueJ vytvoříme instanci třídy

Více

Rovnice přímek v rovině

Rovnice přímek v rovině STŘEDOŠKOLSKÁ ODBORNÁ ČINNOST Obor č. 1 Matematika a statistika Rovnice přímek v rovině Autoři: Jan Kabíček, Petr Henzl Škola: Střední škola spojů a informatiky Tábor, Bydlinského 2474 Kraj: Jihočeský

Více

2 Grafický výstup s využitím knihovny

2 Grafický výstup s využitím knihovny 2 Grafický výstup s využitím knihovny Studijní cíl Tento blok je věnován základním principům při vytváření grafického výstupu pomocí standardních metod, které poskytuje grafické rozhraní. V textu budou

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

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT EU-OVK-VZ-III/2-ZÁ-210

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT EU-OVK-VZ-III/2-ZÁ-210 Číslo a název šablony Číslo didaktického materiálu Druh didaktického materiálu Autor Jazyk Téma sady didaktických materiálů Téma didaktického materiálu Vyučovací předmět Cílová skupina (ročník) Úroveň

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

7 Transformace 2D. 7.1 Transformace objektů obecně. Studijní cíl. Doba nutná k nastudování. Průvodce studiem

7 Transformace 2D. 7.1 Transformace objektů obecně. Studijní cíl. Doba nutná k nastudování. Průvodce studiem 7 Transformace 2D Studijní cíl Tento blok je věnován základním principům transformací v rovinné grafice. V následujícím textu bude vysvětlen rozdíl v přístupu k transformacím u vektorového a rastrového

Více

2 Datové typy v jazyce C

2 Datové typy v jazyce C 1 Procedurální programování a strukturované programování Charakteristické pro procedurální programování je organizace programu, který řeší daný problém, do bloků (procedur, funkcí, subrutin). Původně jednolitý,

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

Naučte se víc... Microsoft Office Excel 2007 PŘÍKLADY

Naučte se víc... Microsoft Office Excel 2007 PŘÍKLADY Naučte se víc... Microsoft Office Excel 2007 PŘÍKLADY Autor: Lukáš Polák Příklady MS Excel 2007 Tato publikace vznikla za přispění společnosti Microsoft ČR v rámci iniciativy Microsoft Partneři ve vzdělávání.

Více

Objektové programování

Objektové programování Objektové programování - přináší nové možnosti a styl programování - vytváří nový datový typ, který umí vše co standardní datové typy + to co ho naučíme - překladač se k tomuto typu chová stejně jako k

Více

SCIA.ESA PT. Galerie obrázků

SCIA.ESA PT. Galerie obrázků SCIA.ESA PT Galerie obrázků 2 VÍTEJTE 5 SPRÁVCE GALERIE OBRÁZKŮ 6 Otevření Galerie obrázků...6 Vložení obrázku z okna do galerie...7 Průvodce tvorbou obrázků...7 Řezy rovinami čárového rastru (generované

Více

Základy programování. Úloha: Eratosthenovo síto. Autor: Josef Hrabal Číslo: HRA0031 Datum: 28.11.2009 Předmět: ZAP

Základy programování. Úloha: Eratosthenovo síto. Autor: Josef Hrabal Číslo: HRA0031 Datum: 28.11.2009 Předmět: ZAP Základy programování Úloha: Eratosthenovo síto Autor: Josef Hrabal Číslo: HRA0031 Datum: 28.11.2009 Předmět: ZAP Obsah 1 Zadání úkolu: 3 1.1 Zadání:............................... 3 1.2 Neformální zápis:.........................

Více

C++ přetěžování funkcí a operátorů. Jan Hnilica Počítačové modelování 19

C++ přetěžování funkcí a operátorů. Jan Hnilica Počítačové modelování 19 C++ přetěžování funkcí a operátorů 1 Přetěžování funkcí jazyk C++ umožňuje napsat více funkcí se stejným názvem, těmto funkcím říkáme přetížené přetížené funkce se musí odlišovat typem nebo počtem parametrů,

Více

Souřadný systém. Obr.: Druhý objekt v otočeném souřadném systému

Souřadný systém. Obr.: Druhý objekt v otočeném souřadném systému Souřadný systém Příkaz: uss/ucs Komentář: AutoCAD umožňuje definici, pojmenování a uchování neomezeného počtu uživatelských souřadných systémů a definuje jeden základní Globální souřadný systém samozřejmě

Více

Aplikované úlohy Solid Edge. SPŠSE a VOŠ Liberec. Ing. Jan Boháček [ÚLOHA 27 NÁSTROJE KRESLENÍ]

Aplikované úlohy Solid Edge. SPŠSE a VOŠ Liberec. Ing. Jan Boháček [ÚLOHA 27 NÁSTROJE KRESLENÍ] Aplikované úlohy Solid Edge SPŠSE a VOŠ Liberec Ing. Jan Boháček [ÚLOHA 27 NÁSTROJE KRESLENÍ] 1 CÍL KAPITOLY V této kapitole si představíme Nástroje kreslení pro tvorbu 2D skic v modulu Objemová součást

Více

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme: 1. lekce 1. Minimální program do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme: #include #include int main() { printf("hello world!\n"); return 0; 2.

Více

Programování jako nástroj porozumění matematice (seriál pro web modernivyuka.cz)

Programování jako nástroj porozumění matematice (seriál pro web modernivyuka.cz) Programování jako nástroj porozumění matematice (seriál pro web modernivyuka.cz) Autor: Radek Vystavěl Díl 12: Algebra Lineární transformace MATEMATIKA Lineární transformace, neboli přeet hodnoty x podle

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

Programování v jazyce C pro chemiky (C2160) 12. Specifické problémy při vývoji vědeckého softwaru

Programování v jazyce C pro chemiky (C2160) 12. Specifické problémy při vývoji vědeckého softwaru Programování v jazyce C pro chemiky (C2160) 12. Specifické problémy při vývoji vědeckého softwaru Reprezentace reálnách čísel v počítači Reálná čísla jsou v počítači reprezentována jako čísla tvaru ±x

Více

přetížení operátorů (o)

přetížení operátorů (o) přetížení operátorů (o) - pro vlastní typy je možné přetížit i operátory (tj. definovat vlastní) - pro definici slouží klíčové slovo operator následované typem/znakem operátoru - deklarace pomocí funkčního

Více

PROGRAMOVÁNÍ V C++ CVIČENÍ

PROGRAMOVÁNÍ V C++ CVIČENÍ PROGRAMOVÁNÍ V C++ CVIČENÍ INFORMACE Michal Brabec http://www.ksi.mff.cuni.cz/ http://www.ksi.mff.cuni.cz/~brabec/ brabec@ksi.mff.cuni.cz gmichal.brabec@gmail.com PODMÍNKY ZÁPOČTU Základní podmínky společné

Více

ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE

ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE FAKULTA STAVEBNÍ OBOR GEODÉZIE A KARTOGRAFIE KATEDRA VYŠŠÍ GEODÉZIE název předmětu úloha/zadání název úlohy Základy fyzikální geodézie 3/19 Legendreovy přidružené funkce

Více

Základy programování (IZP)

Základy programování (IZP) Základy programování (IZP) Osmé počítačové cvičení Brno University of Technology, Faculty of Information Technology Božetěchova 1/2, 612 66 Brno - Královo Pole Petr Veigend, iveigend@fit.vutbr.cz 20.11.2017,

Více

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

Programování v C++ 1, 6. cvičení Programování v C++ 1, 6. cvičení dědičnost, polymorfismus 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled 1 2 3 Shrnutí minule procvičené

Více

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

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

Více

Stručný návod k programu Octave

Stručný návod k programu Octave Stručný návod k programu Octave Octave je interaktivní program vhodný pro technické výpočty. Je nápadně podobný programu MATLAB, na rozdíl od něho je zcela zadarmo. Jeho domovská vebová stránka je http://www.octave.org/,

Více

Cvičné příklady Hodina 2

Cvičné příklady Hodina 2 Cvičný 1 Textové pole (TextBox) Cvičné příklady Hodina 2 Handles Button1.Click 'Procedura pro tlačítko "Předej hodnotu zapsanou v poli Text1 do pole Text2" TextBox2.Text = TextBox1.Text 'Předání hodnoty

Více

Šablony, kontejnery a iterátory

Šablony, kontejnery a iterátory 7. října 2010, Brno Připravil: David Procházka Šablony, kontejnery a iterátory Programovací jazyk C++ Šablony Strana 2 / 21 Šablona funkce/metody Šablona je obecný popis (třídy, funkce) bez toho, že by

Více

Téma: Vektorová grafika. Určete pravdivost následujícího tvrzení: "Grafická data jsou u 2D vektorové grafiky uložena ve voxelech."

Téma: Vektorová grafika. Určete pravdivost následujícího tvrzení: Grafická data jsou u 2D vektorové grafiky uložena ve voxelech. Téma: Vektorová grafika. Určete pravdivost následujícího tvrzení: "Grafická data jsou u 2D vektorové grafiky uložena ve voxelech." Téma: Vektorová grafika. Určete pravdivost následujícího tvrzení: "Na

Více

Algoritmizace prostorových úloh

Algoritmizace prostorových úloh INOVACE BAKALÁŘSKÝCH A MAGISTERSKÝCH STUDIJNÍCH OBORŮ NA HORNICKO-GEOLOGICKÉ FAKULTĚ VYSOKÉ ŠKOLY BÁŇSKÉ - TECHNICKÉ UNIVERZITY OSTRAVA Algoritmizace prostorových úloh Úlohy nad rastrovými daty Daniela

Více

Pracovní text a úkoly ke cvičením MF002

Pracovní text a úkoly ke cvičením MF002 Pracovní text a úkoly ke cvičením MF002 Ondřej Pokora, PřF MU, Brno 11. března 2013 1 Brownův pohyb (Wienerův proces) Základním stavebním kamenem simulací náhodných procesů popsaných pomocí stochastických

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

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace Předmět: Učební praxe Téma: Visual Studio Vyučující: Ing. Milan Káža Třída: EK3 Hodina: 68-70 Číslo: V/5 Programování

Více

11MAMY LS 2017/2018. Úvod do Matlabu. 21. února Skupina 01. reseni2.m a tak dále + M souborem zadané funkce z příkladu 3 + souborem skupina.

11MAMY LS 2017/2018. Úvod do Matlabu. 21. února Skupina 01. reseni2.m a tak dále + M souborem zadané funkce z příkladu 3 + souborem skupina. 11MAMY LS 2017/2018 Cvičení č. 2: 21. 2. 2018 Úvod do Matlabu. Jan Přikryl 21. února 2018 Po skupinách, na které jste se doufám rozdělili samostatně včera, vyřešte tak, jak nejlépe svedete, níže uvedená

Více

II. Úlohy na vložené cykly a podprogramy

II. Úlohy na vložené cykly a podprogramy II. Úlohy na vložené cykly a podprogramy Společné zadání pro příklady 1. - 10. začíná jednou ze dvou možností popisu vstupních dat. Je dána posloupnost (neboli řada) N reálných (resp. celočíselných) hodnot.

Více

Proměnná. Datový typ. IAJCE Cvičení č. 3. Pojmenované místo v paměti sloužící pro uložení hodnoty.

Proměnná. Datový typ. IAJCE Cvičení č. 3. Pojmenované místo v paměti sloužící pro uložení hodnoty. Proměnná Pojmenované místo v paměti sloužící pro uložení hodnoty. K pojmenování můžeme použít kombinace alfanumerických znaků, včetně diakritiky a podtržítka Rozlišují se velká malá písmena Název proměnné

Více

14.4.2010. Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

14.4.2010. Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod. Základy programování (IZAPR) Přednáška 7 Ing. Michael Bažant, Ph.D. Katedra softwarových technologií Kancelář č. 229, Náměstí Čs. legií Michael.Bazant@upce.cz Obsah přednášky 7 Parametry metod, předávání

Více

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT Číslo a název šablony Číslo didaktického materiálu Druh didaktického materiálu Autor Jazyk Téma sady didaktických materiálů Téma didaktického materiálu Vyučovací předmět Cílová skupina (ročník) Úroveň

Více

Př. program s popojíždějícím autíčkem o 50 pixelů při každém stisku Popojeď

Př. program s popojíždějícím autíčkem o 50 pixelů při každém stisku Popojeď Animace a pohyb Př. program s popojíždějícím autíčkem o 50 pixelů při každém stisku Popojeď namespace Autíčko public partial class oknoprogramu : Form int x = 10, y = 10; public oknoprogramu() InitializeComponent();

Více

Algoritmizace a programování

Algoritmizace a programování Algoritmizace a programování Výrazy Operátory Výrazy Verze pro akademický rok 2012/2013 1 Operace, operátory Unární jeden operand, operátor se zapisuje ve většině případů před operand, v některých případech

Více

2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.

2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu. Informatika 10. 9. 2013 Jméno a příjmení Rodné číslo 1) Napište algoritmus pro rychlé třídění (quicksort). 2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus

Více

1.1 Struktura programu v Pascalu Vstup a výstup Operátory a některé matematické funkce 5

1.1 Struktura programu v Pascalu Vstup a výstup Operátory a některé matematické funkce 5 Obsah Obsah 1 Programovací jazyk Pascal 1 1.1 Struktura programu v Pascalu.................... 1 2 Proměnné 2 2.1 Vstup a výstup............................ 3 3 Operátory a některé matematické funkce 5

Více

ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ v Praze Ú12110 Ústav přístrojové a řídící techniky

ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ v Praze Ú12110 Ústav přístrojové a řídící techniky ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ v Praze Ú12110 Ústav přístrojové a řídící techniky Semestrální práce Python pro vědecké výpočty Generátor pulzů pro simulaci vstupů kontroly trakce vozu Formule student Vypracoval:

Více

VISUAL BASIC. Přehled témat

VISUAL BASIC. Přehled témat VISUAL BASIC Přehled témat 1 ÚVOD DO PROGRAMOVÁNÍ Co je to program? Kuchařský předpis, scénář k filmu,... Program posloupnost instrukcí Běh programu: postupné plnění instrukcí zpracovávání vstupních dat

Více

. Grafika a plovoucí prostředí. Zpracování textů na počítači. Ing. Pavel Haluza, Ph.D. ústav informatiky PEF MENDELU v Brně haluza@mendelu.

. Grafika a plovoucí prostředí. Zpracování textů na počítači. Ing. Pavel Haluza, Ph.D. ústav informatiky PEF MENDELU v Brně haluza@mendelu. Grafika a plovoucí prostředí Zpracování textů na počítači Ing Pavel Haluza, PhD ústav informatiky PEF MENDELU v Brně haluza@mendelucz Kreslení vektorových obrazů Příklad \unitlength=1mm \begin{picture}(50,30)(10,20)

Více

Základy algoritmizace a programování

Základy algoritmizace a programování Základy algoritmizace a programování Přednáška 1 Olga Majlingová Katedra matematiky, ČVUT v Praze 19. září 2011 Obsah Úvodní informace 1 Úvodní informace 2 3 4 Doporučená literatura web: http://marian.fsik.cvut.cz/zapg

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

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT Číslo a název šablony Číslo didaktického materiálu Druh didaktického materiálu Autor Jazyk Téma sady didaktických materiálů Téma didaktického materiálu Vyučovací předmět Cílová skupina (ročník) Úroveň

Více

Výukový manuál 1 /64

Výukový manuál 1 /64 1 Vytvoření křížového spojovacího dílu 2 1. Klepněte na ikonu Geomagic Design a otevřete okno Domů. 2. V tomto okně klepněte na Vytvořit nové díly pro vložení do sestavy. 3 1. 2. 3. 4. V otevřeném okně

Více

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme: 1. lekce 1. Minimální program do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme: #include #include int main() { printf("hello world!\n"); return 0; 2.

Více

Obsah. Úvod 11 Základy programování 11 Objektový přístup 11 Procvičování 11 Zvláštní odstavce 12 Zpětná vazba od čtenářů 12 Errata 13

Obsah. Úvod 11 Základy programování 11 Objektový přístup 11 Procvičování 11 Zvláštní odstavce 12 Zpětná vazba od čtenářů 12 Errata 13 Úvod 11 Základy programování 11 Objektový přístup 11 Procvičování 11 Zvláštní odstavce 12 Zpětná vazba od čtenářů 12 Errata 13 KAPITOLA 1 Na úvod o Javě 15 Počítačový program 15 Vysokoúrovňový programovací

Více

1. Dědičnost a polymorfismus

1. Dědičnost a polymorfismus 1. Dědičnost a polymorfismus Cíl látky Cílem této kapitoly je představit klíčové pojmy dědičnosti a polymorfismu. Předtím však je nutné se seznámit se základními pojmy zobecnění neboli generalizace. Komentář

Více

% vyhledání prvku s max. velikostí v jednotlivých sloupcích matice X

% vyhledání prvku s max. velikostí v jednotlivých sloupcích matice X %------------------------------------- % 4. cvičení z předmětu PPEL - MATLAB %------------------------------------- % Lenka Šroubová, ZČU, FEL, KTE % e-mail: lsroubov@kte.zcu.cz %-------------------------------------

Více

BPC2E POČÍTAČOVÉ CVIČENÍ 1

BPC2E POČÍTAČOVÉ CVIČENÍ 1 BPC2E POČÍTAČOVÉ CVIČENÍ 1 Cílem je seznámit se s programováním binárních souborů, v případě tohoto cvičení pak s bitmapovými obrázky. Úloha A. Pro tuto úlohu je připraven zdrojový kódu programu k příkladu

Více

VYTVÁŘENÍ DATABÁZÍ, VKLÁDÁNÍ ÚDAJŮ

VYTVÁŘENÍ DATABÁZÍ, VKLÁDÁNÍ ÚDAJŮ Úvod do problematiky VYTVÁŘENÍ DATABÁZÍ, VKLÁDÁNÍ ÚDAJŮ Databáze je uspořádaná množina velkého množství informací (dat). Příkladem databáze je překladový slovník, seznam PSČ nebo telefonní seznam. Databáze

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

MS EXCEL 2010 ÚLOHY. Vytvořte tabulku podle obrázku, která bude provádět základní matematické operace se dvěma zadanými čísly a a b.

MS EXCEL 2010 ÚLOHY. Vytvořte tabulku podle obrázku, která bude provádět základní matematické operace se dvěma zadanými čísly a a b. MS EXCEL 2010 ÚLOHY ÚLOHA Č.1 Vytvořte tabulku podle obrázku, která bude provádět základní matematické operace se dvěma zadanými čísly a a b. Do buněk B2 a B3 očekávám zadání hodnot. Buňky B6:B13 a D6:D13

Více

Nápověda k aplikaci GraphGUI

Nápověda k aplikaci GraphGUI Nápověda k aplikaci GraphGUI 1 APLIKACE Aplikace slouží pro zobrazování závislosti několika veličin s různými jednotkami a rozsahy na čase v jednom grafu. Do aplikace lze importovat data ze souborů různých

Více

Předmluva 9 Obsah knihy 9 Typografické konvence 10 Informace o autorovi 10 Poděkování 10

Předmluva 9 Obsah knihy 9 Typografické konvence 10 Informace o autorovi 10 Poděkování 10 Obsah Předmluva 9 Obsah knihy 9 Typografické konvence 10 Informace o autorovi 10 Poděkování 10 KAPITOLA 1 Úvod 11 Dostupná rozšíření Matlabu 13 Alternativa zdarma GNU Octave 13 KAPITOLA 2 Popis prostředí

Více

Práce s texty, Transformace rastru, Připojení GPS

Práce s texty, Transformace rastru, Připojení GPS Školení programu TopoL xt Práce s texty, Transformace rastru, Připojení GPS Obsah: 1. Uživatelské rozhraní (heslovitě, bylo součástí minulých školení) 2. Nastavení programu (heslovitě, bylo součástí minulých

Více

Třída DrawingTool. Obrázek 1: Prázdné okno připravené pro kreslení

Třída DrawingTool. Obrázek 1: Prázdné okno připravené pro kreslení Třída DrawingTool strana 1 1. Základ Třída DrawingTool Třída DrawingTool je určena k jednoduchému kreslení pomocí několika základních příkazů do grafického okna zadaných rozměrů (nastavení v konstruktoru),

Více

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

Programování v C++ 1, 1. cvičení Programování v C++ 1, 1. cvičení opakování látky ze základů 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 1 2 Shrnutí procvičených

Více

SEMESTRÁLNÍ PRÁCE Z X37SAS Zadání č. 7

SEMESTRÁLNÍ PRÁCE Z X37SAS Zadání č. 7 SEMESTRÁLNÍ PRÁCE Z X37SAS Zadání č. 7 Daniel Tureček St-lichý týden, 9:15 Zadání Určete periodu signálu s(k), určete stejnosměrnou složku, výkon, autokorelační funkci. Záznam signálu je v souboru persig2.

Více