Distanční opora předmětu: Programování v jazyce C Tématický blok č. 4: Pole a ukazatele Autor: RNDr. Jan Lánský, Ph.D.

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

Download "Distanční opora předmětu: Programování v jazyce C Tématický blok č. 4: Pole a ukazatele Autor: RNDr. Jan Lánský, Ph.D."

Transkript

1 Distanční opora předmětu: Programování v jazyce C Tématický blok č. 4: Pole a ukazatele Autor: RNDr. Jan Lánský, Ph.D. Obsah kapitoly 1 Pole 1.1 Přístup k prvkům pole 1.2 Vícerozměrné pole 1.3 Inicializace pole 2 Ukazatel 2.1 Neinicializovaný a nulový ukazatel 2.2 Ukazatel na ukazatel 2.3 Příklady: ukazatele 2.4 Ukazatel na prvek pole 2.5 Aritmetika ukazatelů 2.6 Příklady: pole a ukazatele Studijní cíle Cíle nutné k zahájení studia dalšího tématického bloku Další cíle Znát klíčové pojmy tohoto tématického bloku (alespoň pasivní znalost je podmínkou pro studium dalších bloků). Podle slovního zadání umět napsat a odladit jednoduchý program pracující se vstupem předem známé velikosti (s použitím polí). Schopnost přistupovat k prvkům pole nejen přes operátor hranatých závorek, ale i s použitím operátoru dereference. Důsledné používání nulového ukazatele. Znalost vícerozměrných polí. Znalost inicializace pole. Čas potřebný ke studiu 2-4 hodiny na prostudování výukových textů + zodpovězení otázek k rekapitulaci 3-8 hodiny na vypracování modelových úloh na PC 1-3 hodiny na praktické zopakování učiva na PC ( v jiný den) 30 min - 1 hodina na (znovu)zodpovězení otázek k rekapitulaci (v jiný den) 1 hodina na vypracování úlohy POT 2, která je formou testu Časy jsou hodně individuální a jsou závislé na míře znalostí z předmětu Úvod do programování a Programování a případných programátorských zkušenostech z jiných jazyků.

2 Úvod V tomto bloku probereme následující témata. Naučíme se deklarovat pole, přistupovat k jeho prvkům. Naučíme se deklarovat pole inicializované počátečními hodnotami. Zmíníme se i o vícerozměrných polích. Seznámí se s ukazateli, vysvětlíme si jejich vzájemný vztah s polem. Ukážeme si jaké chyby mohou nastat při nesprávném používání ukazatelů a jak lze těmto chybám alespoň částečně předcházet používáním nulového ukazatele. Učivo si ukážeme na velkém množství příkladů. Ukážeme si, čím lze nahradit operátor hranatých závorek. Výkladová část Vysvětlivky Červený text Porušením nebo opomenutím takto označených pravidel vznikají těžko odladitelné chyby (zejména pro začínající programátory). Modrý text Doporučení jak programovat v praxi. Často prevence závažných chyb. 1 Pole Pole je datová struktura, která uchovává předem daný počet prvků stejného datového typu. Každý z prvků v poli má danou svoji pozici, kterou nazýváme index prvku. K jednotlivým prvkům pole můžeme přistupovat pomocí indexu v konstantním čase. Proměnná typu pole se deklaruje uvedením datového typu (tohoto typu budou prvky obsažené v poli) následovaného jménem proměnné a hranatými závorkami, v nichž je uvedena velikost pole. Například zápis int x[5] deklaruje pole celých čísel, které se jmenuje x, a které obsahuje 5 prvků. První prvek v poli má index 0, poslední prvek má index o jedna menší, než je velikost pole. V případě pole o velikosti 5 prvků, toto pole obsahuje prvky s indexy 0 až 4. K prvkům pole se přistupuje pomocí operátoru hranatých závorech, v nichž uvedeme index prvku pole, se kterým chceme pracovat. Například zápisem x[4] přistoupíme k prvku s indexem 4, což je pátý prvek pole (v případě našeho pole zároveň i prvek poslední). Velikost pole se zadává při jeho deklaraci, a nejde nikdy v budoucnu změnit. Tuto velikost si musíme jako programátoři pamatovat, neexistuje žádná funkce, která by nám ji znovu řekla. Velikost pole musí být známá už v průběhu kompilace, nejčastěji velikostí bývá přímo konstanta, ale může to být i libovolný konstantní výraz. Kompilátor musí vědět kolik paměti má poli přidělit. V žádném případě nemůže být velikost pole ovlivněna hodnotou, kterou uživatel programu zadá za jeho běhu. V poli po jeho deklaraci jsou jeho jednotlivé prvky neinicializované, obsahují v sobě relativně náhodná data, stejná jaká obsahují ostatní lokální proměnné. Deklarací pole jsme získali

3 nějaký kus paměti, ale obsah této paměti se samotným aktem deklarace nemění, zůstávají zde staré hodnoty, z našeho pohledu náhodná data. 1.1 Přístup k prvkům pole K prvkům pole se přistupuje pomocí operátoru hranatých závorech, v nichž uvedeme index prvku pole, se kterým chceme pracovat. Při přístupu k prvku pole, se nikdy nekontroluje správnost indexu prvku. Kompilátor si pamatuje pouze adresu začátku pole, a podle indexu prvku, který uvedeme, vypočítává adresu paměti, na které by se prvek pole měl nacházet. Můžeme se pokusit přistoupit k prvku s naprosto libovolným indexem, včetně indexů záporných a vždy bude takto vypočítané místo v paměti (adresa začátku pole + index) prohlášeno, za místo, kde se nachází námi hledaný prvek. Předpokládejme, že jsme se v indexu spletli jen o malou hodnotu, například zkusíme pracovat s prvkem s indexem -1 nebo prvkem těsně následujícím za koncem pole. V případě čtení hodnoty prvku pole získáme pouze nesmyslnou hodnotu, což obvykle stačí k tomu, aby náš program nepracoval správně. V případě zápisu do tohoto prvku pole máme šanci způsobit rozsáhlejší škody, například přepsat hodnotu jiné lokální proměnné. Ladit takový program je velmi těžké, protože neočekávané změny libovolné proměnné si je těžké všimnout. Neobvyklé chování programuje se začne projevovat až po vykonání velkého množství dalších příkazů, občas dojde i k ukončení programu operačním systémem. Pokud se spleteme v indexu pole hodně, například budeme chtít přistupovat k prvku s indexem 10 8, adresa tohoto prvku bude mimo adresný prostor našeho programu. Při pokusu z takové adresy číst nebo na ni zapisovat bude náš program násilně ukončen operačním systémem s vypsáním hlášky: Program provedl neplatnou operaci a proto bude ukončen. Na slajdu č. 50 nahoře vidíme příklad na červeném podkladu, ve kterém pomocí cyklu jednotlivým prvkům pole přiřazujeme nějakou hodnotu. V příkladu chybně předpokládáme, že pole má prvky s indexy 1 až 5, místo 0 až 4. Napravo vidíme graficky znázorněný výsledek našeho příkladu. První prvek pole (s indexem 0) v sobě uchovává neznámou náhodnou hodnotu, v průběhu cyklu nebyl modifikován. Mnohem větší problém působí zápis do prvku s indexem 5. Poslední platný index prvku v tomto poli je 4. Zápis do prvku s indexem 5 znamená přepsání paměti, které poli nepatří a může budoucnu způsobit chybný výsledek běhu programu, nebo dokonce jeho násilné ukončení operačním systémem. 1.2 Vícerozměrné pole Zatím jsme pracovali s jednorozměrným (= jednodimenzionálním) polem. Pole se deklaruje uvedením datového typu, názvu proměnné a poté pro každou dimenzi se uvede v hranatých závorkách její velikost. Například zápisem int x[8][8] jsme vytvořili dvojdimenzionální pole (matici) s velikosti dimenzí 8 a 8. Z hlediska syntaxe (tvorby dalších dimenzí) se dimenze se číslují směrem zprava doleva, ale pro praktické příklady s maticemi nedělá problémy si je číslovat zleva doprava. Teoreticky lze tímto postupem vytvořit pole libovolné dimenze, ale málokdy je pro řešení praktických příkladů potřeba větší dimenze než 2. K prvkům pole přistupujeme uvedením názvu proměnné a poté pro každou dimenzi pole uvedeme hranatou závorku a v ní hodnotu příslušné souřadnici (index), podobným způsobem

4 jako se deklarovala velikost jednotlivých dimenzí. Například zápisem x[0][5] přistoupíme k prvku pole s indexem 0 v druhé dimenzi a indexem 5 v první dimenzi. Při přístupu k prvkům vícedimenzionálního pole nejde použít zápis s jednou hranatou závorkou, kde souřadnice by byly odděleny čárkami (ani jinými znaménky). Zápis x[0,5] se vyhodnotí jako x[5] tedy přístup k prvku s indexem 5 v jednodimenzionálním poli, protože zápis 0,5 se vyhodnotí jako použití operátoru sekvence (tématický blok č. 3, kapitola 2.8), tedy hodnotou 5. Na slajdu č. 50 dole vidíme příklad, ve kterém jednotlivým prvkům pole přiřadíme hodnotu rovnou součinu jejich souřadnic. Všimněme si podmínek v obou cyklech (řídící proměnná je menší než 8), které zaručují, že indexem prvků nepřekročíme hranice pole (0 až 7). 1.3 Inicializace pole Podobně jako ostatní proměnné lze i pole při deklaraci inicializovat. Inicializace pole při deklaraci se provádí přidáním znaménka = a ve složených závorkách uzavřeným výčtem prvků pole, navzájem oddělených čárkou. Je velmi důležité nezaměňovat tuto inicializaci při deklaraci s obyčejným přiřazením. Inicializaci jde provést pouze při deklaraci proměnné, tedy pouze jednou na začátku práce s proměnnou a nikoliv, kdykoliv v průběhu práce s proměnnou jako přiřazení. Při deklarace inicializovaného pole nemusíme na rozdíl od normální deklarace uvádět jeho velikost, kompilátor si ji sám dopočítá. Hranaté závorky mohou být tedy prázdné. U vícerozměrných polí se dopočítá pouze rozměr poslední dimenze (uvedené při deklaraci nejvíce nalevo). Pokud se však rozhodneme velikost přesto uvést, může nastat situace, že námi uvedená velikost je menší než skutečný počet prvků, to je syntaktická chyba. Pokud námi uvedená velikost je větší než počet skutečný počet prvků, vytvoří se pole této větší velikosti, obsah chybějících prvků je náhodný. Na slajdu č. 51 vidíme několik příkladů. V prvním z nich vytváříme jednorozměrné pole celých čísel, v druhém z nich jednorozměrné pole textových řetězců a ve třetím případě vytváříme dvojrozměrné pole celých čísel. U dvojrozměrného pole musíme určit velikost první vnitřní dimenze (při deklaraci té vpravo), dopočítá se pouze rozměr druhé vnější dimenze (při deklaraci té vlevo). Dvojrozměrné pole se chová jako pole polí, tedy jeho inicializace obsahuje jako jednotlivé prvky celá jednodimenzionální pole. 2 Ukazatel Každá proměnná má své místo v paměti, kde je uložena její hodnota. Každé místo v paměti má svoji adresu. Ukazatel (= pointer) je taková proměnná, ve které je uložena adresa nějakého jiného místa v paměti. Na slajdu č. 52 je tato problematika graficky znázorněna. Je zde proměnná s hodnotou 1 a poté ukazatel (menší čtvereček, ze kterého vede šipka), který v sobě obsahuje adresu této proměnné. Pro jazyk C je práce s ukazateli typická. Jsou potřeba i k tak základní činnosti, jako je práce s řetězci. Umožňují také funkcím, aby předávaly své parametry odkazem. Nezbytné jsou pro programování dynamických datových struktur (spojový seznam, strom, graf, )

5 Obyčejná proměnná se deklaruje uvedením datového typu a názvu proměnné. Například zápis int x deklaruje proměnnou x typu int. Ukazatel má vždy svůj typ, může v sobě uchovávat pouze adresy proměnných (obecně míst v paměti) jednoho datového typu. Ukazatel se deklaruje uvedením názvu typu následovaného symbolem * (hvězdička) a názvem proměnné. Například zápis int * p deklaruje proměnnou p typu ukazatel na int, v této proměnné můžeme mít uloženy adresy proměnných typu int. Pokud chceme deklarovat více ukazatelů na stejný typ v jedné deklaraci, musíme před každým názvem proměnné typu ukazatel znova uvést symbol *. Zápis int *p, *q deklaruje dva ukazatele na typ int, zatímco zápis int *p, q deklaruje ukazatel p na typ int a obyčejnou proměnnou q typu int. Adresu proměnné získáme pomocí prefixního operátoru reference & (ampersand). Například zápis p = &x znamená, že do proměnné p (typu ukazatel na int) uložím adresu proměnné x (typu int). Tato operace je znázorněna graficky na slajdu č. 53 na obrázku vpravo. Místo formulace, že ukazatel p má v sobě uloženou adresu proměnné x, říkáme, že ukazatel p ukazuje na proměnnou x. Operátor reference lze použít pouze na výrazy, které mají svoji adresu, nelze ho použít na konstantní výrazy, třeba p = &3. Prefixní operátor dereference * (hvězdička) slouží k získání hodnoty proměnné, na kterou ukazatel ukazuje. Například zápis y = *p znamená, že do proměnné y (typu int) uložím hodnotu proměnné, na kterou ukazuje p (ukazatel na typ int), v našem případě hodnotu proměnné x (typu int). Dereference je inverzní operací k referenci. 2.1 Neinicializovaný a nulový ukazatel Po deklaraci je ukazatel neinicializovaný, obsahuje neznámou náhodnou hodnotu, stejně jako jakákoliv jiná lokální proměnná. Je v něm tedy náhodná adresa v paměti. Zatímco v případě neinicializované celočíselného proměnné získáme jejím zpracováním pouze nesmyslný výsledek, v případě ukazatele dojde k přístupu k náhodné adrese paměti. Obvykle se tato náhodná adresa nachází mimo adresný prostor našeho programu a dojde tedy k násilnému ukončení programu ze strany operačního systému. Můžeme mít ovšem smůlu a náhodná adresa může patřit našemu programu, poté data na této adrese zápisem poškodíme. Z hlediska bezpečného programování je výhodné každému nově deklarovanému ukazateli, přiřadit speciální hodnotu, která bude znamenat, že v ukazateli není platná adresa. Za tímto účelem existuje konstanta NULL, která ukazuje na adresu s číslem 0. Můžeme také používat přímo číslo 0, a dokonce tento zápis je mezi programátory rozšířenější. Například zápisem int * p=0 vytvoříme proměnnou p typu ukazatel na int, která ukazuje na adresu 0. Pokud získáme ukazatel například jako parametr funkce, nevíme, zda obsahuje platnou adresu. Pokud důsledně dodržujeme pravidlo s inicializací nově deklarovaných ukazatelů na hodnotu 0, stačí nám nyní otestovat, zda ukazatel neobsahuje hodnotu 0 pomocí zápisu if(!p) nebo if(p!=null). Pokud test projde, ukazatel obsahuje platnou adresu a můžeme s tímto ukazatelem pracovat. Tato ochrana funguje pouze v případě, že ukazatel před prvním použitím testujeme na hodnotu 0. Pokud test neprovedeme, a pokud se pokusíme číst nebo zapisovat data z adresy 0, dojde k běhové chybě programu a jeho ukončení. 2.2 Ukazatel na ukazatel Proměnnou p typu ukazatel (například na int) můžeme považovat za obyčejnou proměnnou, má svoje místo v paměti, kde je uložena její hodnota. Toto místo v paměti má svoji adresu,

6 kterou můžeme pomocí operátoru reference získat a uložit ho do proměnné pp typu ukazatel na ukazatel na int. Někdy bývá taky označován jako dvouhvězdičkový ukazatel. Deklarace ukazatele na ukazatel není složitá, oproti deklaraci obyčejného ukazatele pouze přidáme jednu hvězdičku navíc. V našem případě bude deklarace vypadat takto int ** pp. Do proměnné pp nyní můžeme uložit adresu proměnné p pomocí operátoru reference pp = &p. Pokud chceme získat nazpátek obyčejný ukazatel, použijeme operátor dereference *pp. Pokud se chceme dostat až k hodnotě samotného čísla musíme použít operátor dereference dvakrát **pp. Ukazatel na ukazatel se využívá například při práci s polem textových řetězců, které se používá při zpracování parametrů programu zadaných z příkazové řádky (tématický blok č. 5). Rovněž ze využívá v některých situacích při práci s dynamicky alokovanými datovými strukturami. Lze vytvořit i ukazatel na ukazatel na ukazatel (= tříhvězdičkový ukazatel), pokud při deklaraci použijeme tři hvězdičky int *** ppp, ale takovéto zápisy se vidí v běžných programech velmi vzácně. Počet použitých hvězdiček není limitován, lze tedy vytvořit i ukazatele s 4, 5 nebo i 10 hvězdičkami. 2.3 Příklady: ukazatele Na slajdech č vidíme devět řádek zdrojového kódu aktivně využívajících práci s ukazateli. Na každém ze slajdů je několik řádků označeno tučně. Hodnoty proměnných (a vztahy mezi nimi) po vykonání těchto tučně zvýrazněných řádků jsou pak graficky znázorněny na obrázku napravo. Na slajdu č. 54 na prvním řádku vidíme deklaraci dvou proměnných x a y typu int. Proměnným jsou přiřazeny inicializační hodnoty, x = 1 a y = 3. Na druhém řádku je deklarace dvou ukazatelů na typ int, pojmenovaných px a py. Zajímavý je třetí řádek, kde se pokoušíme zapsat hodnotu 5 na adresu v paměti, kam ukazuje ukazatel px. Ukazatel px je dosud nezinicializovaný, takže v sobě obsahuje neznámou náhodnou adresu, do které se pokusíme provést zápis. Tato programátorská chyba se projeví za běhu programu pravděpodobně jeho ukončením od operačního sytému. Na obrázku napravo je celá situace znázorněna graficky. Abychom mohli pokračovat ve vykonávání zdrojového kódu, musíme si představit, že řádek 3 se nevykonal. Na slajdu č. 55 jsou tučně označeny řádky č. 4 a 5. Na čtvrtém řádku do ukazatele py přiřadíme hodnotu NULL. Následně na tom samém řádku v druhém příkazu zkusíme na adresu, kam ukazuje py zapsat hodnotu 7. Protože py ukazuje na adresu 0 (NULL), dojde k běhové chybě programu a jeho ukončení. Opět předpokládejme, že jsme tento příkaz nevykonali. Na řádku č. 5 otestujeme pomocí podmíněného příkazu, jestli ukazatel py obsahuje nenulovou adresu a pokud ano, provedeme uživatelskou funkci etwas. Protože podmínka splněna nebyla (ukazatel py obsahuje nulovou adresu), funkce se neprovede. Pokud bychom zkoušeli tento zdrojový kód přeložit kompilátorem, je nutné napsat alespoň prázdné tělo funkce etwas, nejedná se o žádnou knihovní funkci. Na obrázku napravo je opět celá situace znázorněna graficky.

7 Na slajdu č. 56 jsou tučně označeny řádky č. 6 a 7. Na šestém řádku přiřadíme do ukazatele px adresu proměnné x, do ukazatele py adresu proměnné y. Na sedmém řádku pomocí operátoru dereference přistoupíme k hodnotě paměti, na kterou ukazuje ukazatel py a tuto hodnotu pomocí postfixního operátoru ++ zvětšíme o jedna. Ukazatel py ukazuje na proměnnou y, která má hodnotu 3, její hodnota se tedy zvýší na 4. Na obrázku napravo dole je opět celá situace znázorněna graficky. U zápisu na sedmém řádku je důležité použití závorek určujících prioritu vykonávání operátorů., aby se jako první vykonal operátor dereference. Bez použití závorek by se vykonal jako první operátor ++, protože jako postfixní operátor má vyšší prioritu, než prefixní operátor dereference. V případě zápisu bez použití závorek by se zvýšila adresa uložená v py o jedna, tedy py by ukazoval do paměti následující za proměnnou y. V této paměti bude pravděpodobně uložena jiná lokální proměnná. Na slajdu č. 56 jsou tučně označeny řádky č. 8 a 9. V prvním příkazu na osmém řádku přiřadíme do ukazatele px adresu uloženou v ukazateli py. Tedy px bude ukazovat na to samé místo v paměti, kam ukazuje py, tedy na proměnnou y. V druhém příkazu na osmém řádku do proměnné y přiřadím hodnotu proměnné x, tedy 1. Tuto situaci znázorňuje horní obrázek napravo slajdu. Na devátém řádku do ukazatele py přiřadíme adresu proměnné x, a na místo kam nově ukazatel ukazuje zapíšeme hodnotu 9. Tedy hodnotu 1 proměnné x přepíšeme na hodnotu 9. Tuto situaci znázorňuje spodní obrázek napravo slajdu. 2.4 Ukazatel na prvek pole Ukazatel může ukazovat nejen na obyčejnou proměnnou, ale například také na určitý prvek pole. Zápisem p=&a[2] do ukazatele p uložíme adresu třetího prvku (prvku s indexem 2) pole a. Pokud se chceme ukazatelem v poli posunout na další prvek, stačí zvětšit jeho hodnotu (uloženou adresu) o jedna například zápisem p++. Tento posun je možné provést, protože pole je souvislý kus paměti a prvky v poli jsou fyzicky uloženy ve stejném pořadí, v jakém k ním můžeme přistoupit pomocí indexů. Na slajdu č. 58 vidíme příklad s polem a o velikosti pět prvků a ukazatelem p. Na třetím řádku zdrojového kódu do prvku s indexem 2 v poli a uložíme hodnotu 20. Na čtvrtém řádku bude ukazatel p nově ukazovat právě na tento prvek s indexem 2. Situace je graficky znázorněna na obrázku vpravo nahoře. Na pátém řádku do prvku pole a s indexem 0 uložím hodnotu uloženou na adrese určené ukazatelem p (hodnota prvku pole a s indexem 2, tedy 20) zmenšenou o 15, tedy číslo 5. Na šestém řádku ukazatel p posunu na další prvek pole (prvek s indexem 3). Na posledním řásku do místa v paměti, kam ukazuje ukazatel p, zapíšu hodnotu 20. Situace je graficky znázorněna na obrázku vpravo dole. 2.5 Aritmetika ukazatelů Existuje automatická konverze pole na ukazatel na první prvek (prvek s indexem 0) tohoto pole. Zápis a je ekvivalentní zápisu &a[0] znamenajícímu adresa prvku s indexem 0 v poli a. Tato konverze se využívá v situacích, kdy na daném místě ve zdrojovém kódu nemůže být

8 použito pole, ale ukazatel být použitý může. Například pole nelze přiřazovat, ani předávat hodnotou. Pokud ukazatel ukazuje na prvek pole, přičtení čísla n k ukazateli znamená posun tohoto ukazatele na prvek pole vzdálený o n pozic napravo od prvku, na který ukazatel právě ukazuje. Odečtení znamená posun nalevo. Na slajdu č. 59 na prvním řádku ukazatel p nastavíme na prvek pole a s indexem 1. Na druhém řádku do prvku vzdáleného od prvku, na který ukazuje ukazatel p, o 3 prvky směrem doprava (prvek s indexem 4) zapíšeme hodnotu 40. Situace je znázorněna na obrázku napravo slajdu. Zápis p[i] znamená hodnota prvku s indexem i v poli p. Tento zápis je ekvivalentní zápisu *(p+i), znamenajícího hodnota místa v paměti, které má adresu získanou přičtením indexu i k adrese pole p. K prvkům pole můžeme přistupovat pomocí operátoru dereference, s polem můžeme pracovat jako s ukazatelem. Operátor hranatých závorek pro práci s polem nemusíme používat. Pokud ukazatel ukazuje na prvek pole, tak naopak s ním můžeme jako s polem pracovat a operátor hranatých závorek na něm používat. 2.6 Příklady: pole a ukazatele Na slajdu č. 60 máme deklarované pole a obsahující 5 prvků typu int a ukazatel p ukazující na typ int. Předpokládejme, že pole je inicializováno počátečními hodnotami 0, 10, 20, 30 a 40, jak ukazuje obrázek napravo slajdu. Nyní se budeme zabývat devíti řádky zdrojového kódu, který je nalevo na slajdu na zeleném podkladu. Na prvním řádku ukazatel p nastavíme tak, aby ukazoval na první prvek (prvek s indexem 0) pole a. Na druhém řádku provedeme přesně to samé, pouze použijeme automatické konverze pole na svůj první prvek. Na třetím řádku do místa v paměti, kam ukazuje ukazatel p, zapíšeme hodnotu prvku pole a s indexem 1. Tedy do prvku pole a s indexem 0 se zapíše hodnota 10. Výsledné pole a má hodnoty 10, 10, 20, 30 a 40. Na čtvrtém řádku je složitější příkaz, rozebereme si samostatně výraz nalevo před operátorem přiřazení a výraz napravo. Výraz nalevo určuje místo v paměti, kam se bude zapisovat hodnota výrazu spočteného napravo. Na pravé straně od prvku pole a s indexem 2 odečteme hodnotu 1, tedy 20-1=19. Na levé straně se ukazatel p posune o 2 prvky doprava a do místa v paměti, kam ukazuje (prvek pole a s indexem 2), zapíšeme hodnotu pravé strany příkazu, tedy 19. Tento složitý příkaz by šel nahradit jednoduchým příkazem a[2]--. Po skončení příkazu ukazatel p stále ukazuje na prvek pole a s indexem 0. Výsledné pole a má hodnoty 10, 10, 19, 30 a 40. Na pátém řádku nastavíme ukazatel p tak, aby ukazoval na prvek pole a s indexem 2. Ekvivalentní zápis by byl p=&a[2]. Hodnoty prvků pole a se nemění, pouze se posouvá ukazatel p. Na šestém řádku je opět složitější příkaz, rozebereme si samostatně výraz nalevo před operátorem přiřazení a výraz napravo. Výraz nalevo p[1] pracuje s ukazatelem p jako s polem. Tento zápis si můžeme dovolit, protože ukazatel p skutečně ukazuje na prvek nějakého pole. Představme si, že prvek pole p s indexem 0 odpovídá prvku pole a s indexem 2. Výraz p[1] znamená, že hodnotu získanou z pravé strany celého příkazu budeme ukládat

9 do prvku pole p s indexem 1, tedy do prvku pole a s indexem 3. Na pravé straně příkazu je výraz *(a+1), který naopak s polem a pracuje jako s ukazatelem, je to ekvivalent výrazu a[1], má hodnotu 10. Celý příkaz do prvku pole a s indexem 3 zapíše hodnotu 10. Výsledné pole a má hodnoty 10, 10, 19, 10 a 40. Na sedmém řádku do prvku pole a s indexem 3 zapíšeme hodnotu prvku pole p s indexem 2, neboli prvku pole a s indexem 4, tedy hodnotu 40. Výsledné pole a má hodnoty 10, 10, 19, 40 a 40. Na osmém řádku nás může překvapit zápis p[-1], který je na pravé straně od operátoru přiřazení. Nejedná se ovšem o chybu. Pole p začíná uprostřed pole a, má tedy platné indexy svých prvků z intervalu <-2,2>. Zápis p[-1] v našem případě odpovídá zápisu a[1], hodnotě 10. Celý příkaz znamená, že do prvku pole a s indexem 2, zapíšeme hodnotu 10. Výsledné pole a má hodnoty 10, 10, 10, 40 a 40. Na devátém řádku vidíme zápis 3[a], který na první pohled připomíná syntaktickou chybu, ale o žádnou chybu se nejedná. V zápisu můžeme rozložit operátor hranatých závorek, získáme *(3+a), využijeme komutativnosti sčítání a získáme *(a+3), tento výraz odpovídá a[3]. Analogicky 2[p] odpovídá p[2]. Přestože tyto zápisy (3[a], 2[p]) jsou syntakticky správně, není vhodné je používat, zdrojový kód se stává nepřehledným. Na devátém řádku do prvku pole prvku pole a s indexem 3 zapíšeme hodnotu p[2], neboli a[4], číslo 40. Výsledné pole a má shodou okolností stejné hodnoty, jaké mělo po vykonání minulého řádku: 10, 10, 10, 40 a 40. Klíčové pojmy pole (prvek, velikost, index, dimenze) ukazatel (nezinicializovaný, nulový) operátory reference a dereference ukazatel na ukazatel automatická konverze pole na ukazatel Otázky k rekapitulaci Upozornění: odpovědi na některé zde uvedené otázky nelze najít ve studijním textu tohoto tématického bloku. Lze je získat vlastním experimentováním se zdrojovými kódy nebo studiem doporučené literatury. Jak se deklaruje jednorozměrné a vícerozměrné pole? Jakým způsobem jsou jednotlivé prvky pole označeny, jak k ním přistoupíme? Jaké hodnoty mají prvky pole po jeho vytvoření? Co se stane, pokud použijeme neplatný index pro přístup k prvku pole? Můžeme měnit velikost pole za běhu programu? Musíme vždy zadat velikost pole? Jaké jsou kladeny podmínky na hodnotu, kterou zadáme jako velikost pole? Jak se deklaruje pole s inicializací jeho prvky? Vysvětlete pojem ukazatel, jak se ukazatel deklaruje?

10 Co dělají operátory reference a dereference? Co znamená ukazatel na ukazatel, jak se deklaruje a k čemu se používá? Od jakých výrazů můžeme získat jejich adresu? Co je to neinicializovaný ukazatel? Co je to nulový ukazatel, k čemu se používá? Co se stane při přístupu k paměti pomocí neinicializovaného nebo nulového ukazatele, je zde nějaký rozdíl? Jaký je rozdíl mezi zápisy p++, *p++, (*p)++ a *(p++), pokud p je ukazatel? Jaký je vztah mezi ukazatelem a polem a k čemu se tento vztah využívá? Můžeme v poli přistoupit k prvku se záporným indexem? Jaký je vztah mezi operátorem hranatých závorek a operátorem dereference. Které ze zápisů jsou syntakticky správně p[i], [p]i, i[p], [i]p, za předpokladu, že p je pole a i je celé číslo? Co tyto zápisy znamenají? Své odpovědi zdůvodněte. Můžete přidat i syntaktické zápisy tam, kde je to vhodné. Doporučené příklady k naprogramování Pro zadání vstupních dat použijte inicializované pole, je to rychlejší, než při každém testovacím pokusu, zadávat znova data z klávesnice. V programu používejte funkce, kterým předáte jako parametry ukazatel na první prvek pole a velikost pole. 1. Napište program, který setřídí pole. Vyzkoušejte všechny následující třídící algoritmy: minimem, bubblesort, mergesort, quicksort, heapsort v poli. 2. Napište program, který v poli najde třetí největší prvek a spočítá aritmetický průměr prvků pole. Původní pole musí zůstat nezměněno 3. Napište program, který v poli najde medián (když se prvky setřídí, tak je to prostřední prvek, v případě sudého počtu prvků je to aritmetický průměr prostředních prvků) a modus (nejčastěji se vyskytující prvek). Původní pole musí zůstat nezměněno. 4. Definujte si výčtový typ a pak náhodně s jeho prvky naplňte pole. Napište program, který vypíše počty výskytů jednotlivých prvků pole setříděné sestupně. 5. Dobrovolný domácí úkol č. 1: Pomocí Gaussovy eliminační metody vyřešte soustavu n rovnic o n neznámých, kde n je pevně dané. Zdrojový kód tohoto domácího úkolu lze používat u zkoušky. Studijní literatura Výklad často odkazuje na slajdy (ve formátu.ppt), které je vhodné si vytisknout. Je vhodné si pořídit nějakou knihu o programování v C nebo C++. Uvedené příklady knih berte pouze jako inspirativní. Miroslav Virius: Programování v C++ (ČVUT, 2. vydání 2004) Jesse Liberty, Bradley L. Jones: Naučte se C++ za 21 dní (Computer Press, 2. vydání, 2007)

11 Knihu je dobré číst postupně a vlastním tempem, můžete mít i mírné zpoždění oproti našemu výkladu. Pořadí kapitol v knize neodpovídá úplně přesně pořadí, v jakém učivo probíráme. Tento tématický blok se zaměřte na pole a ukazatele Miroslav Virius: Pasti a propasti jazyka C++ (Brno, 2. vydání 2005) Kapitola 3 Pole a ukazatele

Distanční opora předmětu: Programování v jazyce C Tématický blok č. 6: Dynamická alokace paměti, typové konstrukce Autor: RNDr. Jan Lánský, Ph.D.

Distanční opora předmětu: Programování v jazyce C Tématický blok č. 6: Dynamická alokace paměti, typové konstrukce Autor: RNDr. Jan Lánský, Ph.D. Distanční opora předmětu: Programování v jazyce C Tématický blok č. 6: Dynamická alokace paměti, typové konstrukce Autor: RNDr. Jan Lánský, Ph.D. Obsah kapitoly 1 Dynamická alokace paměti 2 Organizace

Více

Distanční opora předmětu: Programování v jazyce C Tématický blok č. 8: Dynamické datové struktury, ladění programů Autor: RNDr. Jan Lánský, Ph.D.

Distanční opora předmětu: Programování v jazyce C Tématický blok č. 8: Dynamické datové struktury, ladění programů Autor: RNDr. Jan Lánský, Ph.D. Distanční opora předmětu: Programování v jazyce C Tématický blok č. 8: Dynamické datové struktury, ladění programů Autor: RNDr. Jan Lánský, Ph.D. Obsah kapitoly 1 Dynamické datové struktury 1.1 Příklad:

Více

Pointery II. Jan Hnilica Počítačové modelování 17

Pointery II. Jan Hnilica Počítačové modelování 17 Pointery II 1 Pointery a pole Dosavadní způsob práce s poli zahrnoval: definici pole jakožto kolekce proměnných (prvků) jednoho typu, umístěných v paměti za sebou int pole[10]; práci s jednotlivými prvky

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

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

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

Distanční opora předmětu: Programování v jazyce C Tématický blok č. 5: Řetězce, parametry programu Autor: RNDr. Jan Lánský, Ph.D.

Distanční opora předmětu: Programování v jazyce C Tématický blok č. 5: Řetězce, parametry programu Autor: RNDr. Jan Lánský, Ph.D. Distanční opora předmětu: Programování v jazyce C Tématický blok č. 5: Řetězce, parametry programu Autor: RNDr. Jan Lánský, Ph.D. Obsah kapitoly 1 Řetězce 1.1 Deklarace a inicializace řetězcové proměnné

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

Úvod do řešení lineárních rovnic a jejich soustav

Úvod do řešení lineárních rovnic a jejich soustav Úvod do řešení lineárních rovnic a jejich soustav Rovnice je zápis rovnosti dvou výrazů, ve kterém máme najít neznámé číslo (neznámou). Po jeho dosazení do rovnice musí platit rovnost. Existuje-li takové

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

Ukazatele a pole. Chceme-li vyplnit celé pole nulami, použijeme prázdný inicializátor: 207 Čárka na konci seznamu inicializátorů

Ukazatele a pole. Chceme-li vyplnit celé pole nulami, použijeme prázdný inicializátor: 207 Čárka na konci seznamu inicializátorů Ukazatele a pole 204 Deklarace jednorozměrného pole s inicializací Chceme-li pole v deklaraci inicializovat, zapíšeme seznam inicializátorů jednotlivých prvků do složených závorek: #define N 5 int A[N]

Více

Znalost výčtových typů. Aktivní znalost kombinovaných (zkrácených přiřazení). Znalost bitových operací. Znalost operátoru sekvence.

Znalost výčtových typů. Aktivní znalost kombinovaných (zkrácených přiřazení). Znalost bitových operací. Znalost operátoru sekvence. Distanční opora předmětu: Programování v jazyce C Tématický blok č. 3: Datové typy a operátory Autor: RNDr. Jan Lánský, Ph.D. Obsah kapitoly 1 Datové typy 1.1 Celočíselné typy 1.2 Logické typy 1.3 Znakový

Více

MAXScript výukový kurz

MAXScript výukový kurz MAXScript výukový kurz Díl čtvrtý jazyk MAXScript, část I. Jan Melichar, březen 2008 Jan Melichar (aka JME) strana 1 OBSAH ÚVOD... 4 ZÁKLADNÍ PŘÍKAZY... 5 OPERÁTORY... 6 PROMĚNNÉ... 6 POLE... 7 ZÁVĚREM...

Více

Ukazatel (Pointer) jako datový typ - proměnné jsou umístěny v paměti na určitém místě (adrese) a zabírají určitý prostor (počet bytů), který je daný

Ukazatel (Pointer) jako datový typ - proměnné jsou umístěny v paměti na určitém místě (adrese) a zabírají určitý prostor (počet bytů), který je daný Ukazatel (Pointer) jako datový typ - proměnné jsou umístěny v paměti na určitém místě (adrese) a zabírají určitý prostor (počet bytů), který je daný typem proměnné - ukazatel je tedy adresa společně s

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

5 Přehled operátorů, příkazy, přetypování

5 Přehled operátorů, příkazy, přetypování 5 Přehled operátorů, příkazy, přetypování Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně budou uvedeny detaily týkající se operátorů. Doba nutná k nastudování

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

Programovací jazyk Pascal

Programovací jazyk Pascal Programovací jazyk Pascal Syntaktická pravidla (syntaxe jazyka) přesná pravidla pro zápis příkazů Sémantická pravidla (sémantika jazyka) pravidla, která každému příkazu přiřadí přesný význam Všechny konstrukce

Více

Př. další použití pointerů

Př. další použití pointerů Př. další použití pointerů char *p_ch; int *p_i; p_ch = (char *) p_i; // konverze int * na char * 8 int i = 5; int *p_i; p_i = &i; POZOR!!!! scanf("%d", p_i); printf("%d", *p_i); Obecný pointer na cokoliv:

Více

Distanční opora předmětu: Programování v jazyce C Tématický blok č. 2: Proměnná, výraz, příkaz, podmínka, cyklus Autor: RNDr. Jan Lánský, Ph.D.

Distanční opora předmětu: Programování v jazyce C Tématický blok č. 2: Proměnná, výraz, příkaz, podmínka, cyklus Autor: RNDr. Jan Lánský, Ph.D. Distanční opora předmětu: Programování v jazyce C Tématický blok č. 2: Proměnná, výraz, příkaz, podmínka, cyklus Autor: RNDr. Jan Lánský, Ph.D. Obsah kapitoly 1 Proměnné 1.1 Deklarace a inicializace proměnných

Více

Základy programování (IZP)

Základy programování (IZP) Základy programování (IZP) Šesté 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 6. týden

Více

1. D Y N A M I C K É DAT O V É STRUKTUR Y

1. D Y N A M I C K É DAT O V É STRUKTUR Y 1. D Y N A M I C K É DAT O V É STRUKTUR Y Autor: Petr Mik Abychom se mohli pustit do dynamických datových struktur, musíme se nejdřív podívat na datový typ ukazatel. 1. D AT O V Ý TYP U K A Z AT E L Datové

Více

Vyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky

Vyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky Vyučovací hodina 1vyučovací hodina: Opakování z minulé hodiny Nová látka Procvičení nové látky Shrnutí 5 min 20 min 15 min 5 min 2vyučovací hodiny: Opakování z minulé hodiny Nová látka Procvičení nové

Více

IUJCE 07/08 Přednáška č. 4. v paměti neexistuje. v paměti existuje

IUJCE 07/08 Přednáška č. 4. v paměti neexistuje. v paměti existuje Konstanty I možnosti: přednostně v paměti neexistuje žádný ; o preprocesor (deklarace) #define KONSTANTA 10 o konstantní proměnná (definice) const int KONSTANTA = 10; příklad #include v paměti

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: Vývoj aplikací Téma: Pole Vyučující: Ing. Milan Káža Třída: EK3 Hodina: 14 Číslo: V/5 Programování v jazyce

Více

KAPITOLA 9 - POKROČILÁ PRÁCE S TABULKOVÝM PROCESOREM

KAPITOLA 9 - POKROČILÁ PRÁCE S TABULKOVÝM PROCESOREM KAPITOLA 9 - POKROČILÁ PRÁCE S TABULKOVÝM PROCESOREM CÍLE KAPITOLY Využívat pokročilé možnosti formátování, jako je podmíněné formátování, používat vlastní formát čísel a umět pracovat s listy. Používat

Více

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 21.

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 21. Vyhledávání doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 21. září 2018 Jiří Dvorský (VŠB TUO) Vyhledávání 242 / 433 Osnova přednášky

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

Programování v jazyce C pro chemiky (C2160) 3. Příkaz switch, příkaz cyklu for, operátory ++ a --, pole

Programování v jazyce C pro chemiky (C2160) 3. Příkaz switch, příkaz cyklu for, operátory ++ a --, pole Programování v jazyce C pro chemiky (C2160) 3. Příkaz switch, příkaz cyklu for, operátory ++ a --, pole Příkaz switch Příkaz switch provede příslušnou skupinu příkazů na základě hodnoty proměnné (celočíselné

Více

Slovní úlohy I

Slovní úlohy I ..1 Slovní úlohy I Předpoklady: 0008 Pedagogická poznámka: Slovní úlohy jsou problém, hlavně pro to, že neexistuje jednoznačný algoritmus na jejich řešení. Této první hodiny se však problémy netýkají,

Více

Vícerozměrná pole. Úvod do programování 2 Tomáš Kühr

Vícerozměrná pole. Úvod do programování 2 Tomáš Kühr Vícerozměrná pole Úvod do programování 2 Tomáš Kühr Organizační záležitosti Konzultace Pracovna 5.043 Úterý 9.40 11.20 (oficiální) Pátek 8.30 9.40, dle potřeby Emailem tomas.kuhr@upol.cz Web předmětu:

Více

6 Příkazy řízení toku

6 Příkazy řízení toku 6 Příkazy řízení toku 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 příkazům pro řízení toku programu. Pro všechny tyto základní

Více

příkladů do cvičení. V textu se objeví i pár detailů, které jsem nestihl (na které jsem zapomněl) a(b u) = (ab) u, u + ( u) = 0 = ( u) + u.

příkladů do cvičení. V textu se objeví i pár detailů, které jsem nestihl (na které jsem zapomněl) a(b u) = (ab) u, u + ( u) = 0 = ( u) + u. Několik řešených příkladů do Matematiky Vektory V tomto textu je spočteno několik ukázkových příkladů které vám snad pomohou při řešení příkladů do cvičení. V textu se objeví i pár detailů které jsem nestihl

Více

Nerovnice a nerovnice v součinovém nebo v podílovém tvaru

Nerovnice a nerovnice v součinovém nebo v podílovém tvaru Variace 1 Nerovnice a nerovnice v součinovém nebo v podílovém tvaru Autor: Mgr. Jaromír JUŘEK Kopírování a jakékoliv další využití výukového materiálu je povoleno pouze s uvedením odkazu na www.jarjurek.cz

Více

Algoritmizace a programování

Algoritmizace a programování Algoritmizace a programování Řídicí struktury jazyka Java Struktura programu Příkazy jazyka Blok příkazů Logické příkazy Ternární logický operátor Verze pro akademický rok 2012/2013 1 Struktura programu

Více

Paměť počítače. alg2 1

Paměť počítače. alg2 1 Paměť počítače Výpočetní proces je posloupnost akcí nad daty uloženými v paměti počítače Data jsou v paměti reprezentována posloupnostmi bitů (bit = 0 nebo 1) Připomeňme: paměť je tvořena řadou 8-mi bitových

Více

pracovní list studenta

pracovní list studenta Výstup RVP: Klíčová slova: pracovní list studenta Funkce kvadratická funkce Mirek Kubera žák načrtne grafy požadovaných funkcí, formuluje a zdůvodňuje vlastnosti studovaných funkcí, modeluje závislosti

Více

Ukazatele, dynamická alokace

Ukazatele, dynamická alokace Ukazatele, dynamická alokace Karel Richta a kol. katedra počítačů FEL ČVUT v Praze Přednášky byly připraveny s pomocí materiálů, které vyrobili Ladislav Vágner, Pavel Strnad, Martin Mazanec Karel Richta,

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

Operátory, výrazy. Tomáš Pitner, upravil Marek Šabo

Operátory, výrazy. Tomáš Pitner, upravil Marek Šabo Operátory, výrazy Tomáš Pitner, upravil Marek Šabo Operátor "Znaménko operace", pokyn pro vykonání operace při vyhodnocení výrazu. V Javě mají operátory napevno daný význam, nelze je přetěžovat jako v

Více

Gabriela Janská. Středočeský vzdělávací institut akademie J. A. Komenského www.sviajak.cz

Gabriela Janská. Středočeský vzdělávací institut akademie J. A. Komenského www.sviajak.cz PŘÍRUČKA KE KURZU: ZÁKLADY PRÁCE NA PC MS WORD 2003 Gabriela Janská Středočeský vzdělávací institut akademie J. A. Komenského www.sviajak.cz Obsah: 1. Písmo, velikost písma, tučně, kurzíva, podtrhnout

Více

Operátory. Základy programování 1 Tomáš Kühr

Operátory. Základy programování 1 Tomáš Kühr Operátory Základy programování 1 Tomáš Kühr Operátory a jejich vlastnosti Základní konstrukce (skoro) každého jazyka Z daných operandů vytvoří výsledek, který je možné dále využívat Arita udává počet operandů

Více

South Bohemia Mathematical Letters Volume 23, (2015), No. 1, DĚLENÍ KRUHU NA OBLASTI ÚVOD

South Bohemia Mathematical Letters Volume 23, (2015), No. 1, DĚLENÍ KRUHU NA OBLASTI ÚVOD South Bohemia Mathematical Letters Volume 23, (2015), No. 1, 113-122. DĚLENÍ KRUHU NA OBLASTI MAREK VEJSADA ABSTRAKT. V textu se zabývám řešením následujícího problému: Zvolíme na kružnici určitý počet

Více

Dynamická alokace paměti

Dynamická alokace paměti Dynamická alokace paměti doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 13. března 2017 Jiří Dvorský (VŠB TUO) Dynamická alokace

Více

for (i = 0, j = 5; i < 10; i++) { // tělo cyklu }

for (i = 0, j = 5; i < 10; i++) { // tělo cyklu } 5. Operátor čárka, - slouží k jistému určení pořadí vykonání dvou příkazů - oddělím-li čárkou dva příkazy, je jisté, že ten první bude vykonán dříve než příkaz druhý. Např.: i = 5; j = 8; - po překladu

Více

Více o konstruktorech a destruktorech

Více o konstruktorech a destruktorech Více o konstruktorech a destruktorech Více o konstruktorech a o přiřazení... inicializovat objekt lze i pomocí jiného objektu lze provést přiřazení mezi objekty v původním C nebylo možné provést přiřazení

Více

int t1, t2, t3, t4, t5, t6, t7, prumer; t1=sys.readint();... t7=sys.readint(); prume pru r = r = ( 1+t 1+t t3+ t3+ t4 t5+ t5+ +t7 +t7 )/ ;

int t1, t2, t3, t4, t5, t6, t7, prumer; t1=sys.readint();... t7=sys.readint(); prume pru r = r = ( 1+t 1+t t3+ t3+ t4 t5+ t5+ +t7 +t7 )/ ; Pole Příklad: přečíst teploty naměřené v jednotlivých dnech týdnu, vypočítat průměrnou teplotu a pro každý den vypsat odchylku od průměrné teploty Řešení s proměnnými typu int: int t1, t2, t3, t4, t5,

Více

Úvod do programování 6. hodina

Úvod do programování 6. hodina Úvod do programování 6. hodina RNDr. Jan Lánský, Ph.D. Katedra informatiky a matematiky Fakulta ekonomických studií Vysoká škola finanční a správní 2015 Umíme z minulé hodiny Algoritmy Třídění pole: Selection

Více

MQL4 COURSE. By Coders guru www.forex-tsd.com. -5 Smyčky & Rozhodnutí Part 1

MQL4 COURSE. By Coders guru www.forex-tsd.com. -5 Smyčky & Rozhodnutí Part 1 MQL4 COURSE By Coders guru www.forex-tsd.com -5 Smyčky & Rozhodnutí Part 1 Vítejte v páté lekci mého kurzu MQL4. Předchozí lekci si můžete stáhnout z tohoto odkazu: http://forex-tsd.com /attachment.php?attachmentid=399

Více

Pokročilé programování v jazyce C pro chemiky (C3220) Operátory new a delete, virtuální metody

Pokročilé programování v jazyce C pro chemiky (C3220) Operátory new a delete, virtuální metody Pokročilé programování v jazyce C pro chemiky (C3220) Operátory new a delete, virtuální metody Dynamická alokace paměti Jazyky C a C++ poskytují programu možnost vyžádat si část volné operační paměti pro

Více

2.1.4 Funkce, definiční obor funkce. π 4. Předpoklady: 2103. Pedagogická poznámka: Následující ukázky si studenti do sešitů nepřepisují.

2.1.4 Funkce, definiční obor funkce. π 4. Předpoklady: 2103. Pedagogická poznámka: Následující ukázky si studenti do sešitů nepřepisují. .. Funkce, definiční obor funkce Předpoklady: 03 Pedagogická poznámka: Následující ukázky si studenti do sešitů nepřepisují. Uděláme si na tabuli jenom krátký seznam: S = a, y = x, s = vt, výška lidí v

Více

Úvod do programování 7. hodina

Úvod do programování 7. hodina Úvod do programování 7. hodina RNDr. Jan Lánský, Ph.D. Katedra informatiky a matematiky Fakulta ekonomických studií Vysoká škola finanční a správní 2015 Umíme z minulé hodiny Syntax Znaky Vlastní implementace

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

Maticí typu (m, n), kde m, n jsou přirozená čísla, se rozumí soubor mn veličin a jk zapsaných do m řádků a n sloupců tvaru:

Maticí typu (m, n), kde m, n jsou přirozená čísla, se rozumí soubor mn veličin a jk zapsaných do m řádků a n sloupců tvaru: 3 Maticový počet 3.1 Zavedení pojmu matice Maticí typu (m, n, kde m, n jsou přirozená čísla, se rozumí soubor mn veličin a jk zapsaných do m řádků a n sloupců tvaru: a 11 a 12... a 1k... a 1n a 21 a 22...

Více

Maturitní otázky z předmětu PROGRAMOVÁNÍ

Maturitní otázky z předmětu PROGRAMOVÁNÍ Wichterlovo gymnázium, Ostrava-Poruba, příspěvková organizace Maturitní otázky z předmětu PROGRAMOVÁNÍ 1. Algoritmus a jeho vlastnosti algoritmus a jeho vlastnosti, formy zápisu algoritmu ověřování správnosti

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

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 Programování v jazyce C a C# část I. Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace Předmět: Algoritmizace a programování Téma: Programování Vyučující: Ing. Milan Káža

Více

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 12.

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 12. Vyhledávání doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 12. září 2016 Jiří Dvorský (VŠB TUO) Vyhledávání 201 / 344 Osnova přednášky

Více

1 Linearní prostory nad komplexními čísly

1 Linearní prostory nad komplexními čísly 1 Linearní prostory nad komplexními čísly V této přednášce budeme hledat kořeny polynomů, které se dále budou moci vyskytovat jako složky vektorů nebo matic Vzhledem k tomu, že kořeny polynomu (i reálného)

Více

Soustavy linea rnı ch rovnic

Soustavy linea rnı ch rovnic [1] Soustavy lineárních rovnic vlastnosti množin řešení metody hledání řešení nejednoznačnost zápisu řešení a) soustavy, 10, b) P. Olšák, FEL ČVUT, c) P. Olšák 2010, d) BI-LIN, e) L, f) 2009/2010, g)l.

Více

MQL4 COURSE. By Coders guru -8- Proměnné

MQL4 COURSE. By Coders guru  -8- Proměnné MQL4 COURSE By Coders guru www.forex-tsd.com -8- Proměnné Vítejte v lekci proměnné mého MQL 4 kurzu. Doufám, že se vám předchozí lekce líbily a že jste připraveni na boj s proměnnými: Doporučuji, abyste

Více

POČÍTAČE A PROGRAMOVÁNÍ

POČÍTAČE A PROGRAMOVÁNÍ POČÍTAČE A PROGRAMOVÁNÍ Vícerozměrná statická a dynamická pole, Pole polí Miroslav Vavroušek PPI 08 V1.1 Opakovaní z minulé přednášky Datová pole Jednorozměrná statická datová pole Dynamická datová pole

Více

Gymnázium Vysoké Mýto nám. Vaňorného 163, 566 01 Vysoké Mýto

Gymnázium Vysoké Mýto nám. Vaňorného 163, 566 01 Vysoké Mýto Gymnázium Vysoké Mýto nám. Vaňorného 163, 566 01 Vysoké Mýto Registrační číslo projektu Šablona Autor Název materiálu / Druh CZ.1.07/1.5.00/34.0951 III/2 INOVACE A ZKVALITNĚNÍ VÝUKY PROSTŘEDNICTVÍM ICT

Více

Vektory a matice. Obsah. Aplikovaná matematika I. Carl Friedrich Gauss. Základní pojmy a operace

Vektory a matice. Obsah. Aplikovaná matematika I. Carl Friedrich Gauss. Základní pojmy a operace Vektory a matice Aplikovaná matematika I Dana Říhová Mendelu Brno Obsah 1 Vektory Základní pojmy a operace Lineární závislost a nezávislost vektorů 2 Matice Základní pojmy, druhy matic Operace s maticemi

Více

Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost rozhraním a výjimkám.

Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost rozhraním a výjimkám. 13 Rozhraní, výjimky 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 rozhraním a výjimkám. Doba nutná k nastudování 2 2,5 hodiny

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. 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

MATICE. a 11 a 12 a 1n a 21 a 22 a 2n A = = [a ij]

MATICE. a 11 a 12 a 1n a 21 a 22 a 2n A = = [a ij] MATICE Matice typu m/n nad tělesem T je soubor m n prvků z tělesa T uspořádaných do m řádků a n sloupců: a 11 a 12 a 1n a 21 a 22 a 2n A = = [a ij] a m1 a m2 a mn Prvek a i,j je prvek matice A na místě

Více

VZORCE A VÝPOČTY. Autor: Mgr. Dana Kaprálová. Datum (období) tvorby: září, říjen 2013. Ročník: sedmý

VZORCE A VÝPOČTY. Autor: Mgr. Dana Kaprálová. Datum (období) tvorby: září, říjen 2013. Ročník: sedmý Autor: Mgr. Dana Kaprálová VZORCE A VÝPOČTY Datum (období) tvorby: září, říjen 2013 Ročník: sedmý Vzdělávací oblast: Informatika a výpočetní technika 1 Anotace: Žáci se seznámí se základní obsluhou tabulkového

Více

Programujeme v softwaru Statistica

Programujeme v softwaru Statistica Programujeme v softwaru Statistica díl druhý Newsletter Statistica ACADEMY Téma: Programování, makra, skripty Typ článku: Návody V tomto článku si ukážeme další možnosti při psaní maker v softwaru Statistica.

Více

6. blok část C Množinové operátory

6. blok část C Množinové operátory 6. blok část C Množinové operátory Studijní cíl Tento blok je věnován problematice množinových operátorů a práce s množinovými operátory v jazyce SQL. Čtenáři se seznámí s operátory, UNION, a INTERSECT.

Více

Matematika B101MA1, B101MA2

Matematika B101MA1, B101MA2 Matematika B101MA1, B101MA2 Zařazení předmětu: povinný předmět 1.ročníku bc studia 2 semestry Rozsah předmětu: prezenční studium 2 + 2 kombinované studium 16 + 0 / semestr Zakončení předmětu: ZS zápočet

Více

= - rovnost dvou výrazů, za x můžeme dosazovat různá čísla, tím měníme

= - rovnost dvou výrazů, za x můžeme dosazovat různá čísla, tím měníme - FUNKCE A ROVNICE Následující základní znalosti je nezbytně nutné umět od okamžiku probrání až do konce kapitoly (většinou do napsání čtvrtletní písemné práce, na výjimky z tohoto pravidla bude upozorněno).

Více

Cvičení z Numerických metod I - 12.týden

Cvičení z Numerických metod I - 12.týden Máme systém lineárních rovnic Cvičení z Numerických metod I - týden Přímé metody řešení systému lineárních rovnic Ax = b, A = a a n a n a nn Budeme hledat přesné řešení soustavy x = x x n, b = b b n, x

Více

2 ) 4, Φ 1 (1 0,005)

2 ) 4, Φ 1 (1 0,005) Příklad 1 Ze zásilky velkého rozsahu byl náhodně vybrán soubor obsahující 1000 kusů. V tomto souboru bylo zjištěno 26 kusů nekvalitních. Rozhodněte, zda je možné s 99% jistotou tvrdit, že zásilka obsahuje

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

Distanční opora předmětu: Databázové systémy Tématický blok č. 8: Transact SQL Autor: RNDr. Jan Lánský, Ph.D.

Distanční opora předmětu: Databázové systémy Tématický blok č. 8: Transact SQL Autor: RNDr. Jan Lánský, Ph.D. Distanční opora předmětu: Databázové systémy Tématický blok č. 8: Transact SQL Autor: RNDr. Jan Lánský, Ph.D. Obsah kapitoly 1 Motivace 2 Základy syntaxe 3 Procedury a Funkce 4 Kurzory 5 Výjimky Studijní

Více

10. Soustavy lineárních rovnic, determinanty, Cramerovo pravidlo

10. Soustavy lineárních rovnic, determinanty, Cramerovo pravidlo 0. Soustavy lineárních rovnic, determinanty, Cramerovo pravidlo (PEF PaA) Petr Gurka aktualizováno 9. prosince 202 Obsah Základní pojmy. Motivace.................................2 Aritmetický vektorový

Více

Algoritmizace a programování. Ak. rok 2012/2013 vbp 1. ze 44

Algoritmizace a programování. Ak. rok 2012/2013 vbp 1. ze 44 Algoritmizace a programování Ak. rok 2012/2013 vbp 1. ze 44 Vladimír Beneš Petrovický K101 katedra matematiky, statistiky a informačních technologií vedoucí katedry E-mail: vbenes@bivs.cz Telefon: 251

Více

Matematika (CŽV Kadaň) aneb Úvod do lineární algebry Matice a soustavy rovnic

Matematika (CŽV Kadaň) aneb Úvod do lineární algebry Matice a soustavy rovnic Přednáška třetí (a pravděpodobně i čtvrtá) aneb Úvod do lineární algebry Matice a soustavy rovnic Lineární rovnice o 2 neznámých Lineární rovnice o 2 neznámých Lineární rovnice o dvou neznámých x, y je

Více

Návod na používání Digitálního povodňového plánu povodňové komise

Návod na používání Digitálního povodňového plánu povodňové komise Návod na používání Digitálního povodňového plánu povodňové komise Obsah: 1. Spuštění programu 2. Změny údajů v povodňových komisích 3. Další možnost editace změn u osob 4. Zápis nových členů povodňových

Více

Operátory. Základy programování 1 Martin Kauer (Tomáš Kühr)

Operátory. Základy programování 1 Martin Kauer (Tomáš Kühr) Operátory Základy programování 1 Martin Kauer (Tomáš Kühr) Organizační poznámky Formátujte kód přehledně! Pomůžete sobě i mně. Spusťte si vaše programy a zkuste různé vstupy! Pokud program nedává správné

Více

Test prvočíselnosti. Úkol: otestovat dané číslo N, zda je prvočíslem

Test prvočíselnosti. Úkol: otestovat dané číslo N, zda je prvočíslem Test prvočíselnosti Úkol: otestovat dané číslo N, zda je prvočíslem 1. zkusit všechny dělitele od 2 do N-1 časová složitost O(N) cca N testů 2. stačí zkoušet všechny dělitele od 2 do N/2 (větší dělitel

Více

Úvod do Matlabu. Praha & EU: Investujeme do vaší budoucnosti. 1 / 24 Úvod do Matlabu

Úvod do Matlabu. Praha & EU: Investujeme do vaší budoucnosti. 1 / 24 Úvod do Matlabu Vytěžování dat, cvičení 1: Úvod do Matlabu Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Fakulta elektrotechnická, ČVUT 1 / 24 Úvod do Matlabu Proč proboha Matlab? Matlab je SW pro

Více

ALGORITMIZACE A PROGRAMOVÁNÍ

ALGORITMIZACE A PROGRAMOVÁNÍ Metodický list č. 1 Algoritmus a jeho implementace počítačovým programem Základním cílem tohoto tematického celku je vysvětlení pojmů algoritmus a programová implementace algoritmu. Dále je cílem seznámení

Více

PROGRAMOVÁNÍ V JAZYCE C V PŘÍKLADECH 11 Dynamické datové struktury 11.1 Spojové struktury... 11-1 11.2 Příklad PROG_11-01... 11-2 11.

PROGRAMOVÁNÍ V JAZYCE C V PŘÍKLADECH 11 Dynamické datové struktury 11.1 Spojové struktury... 11-1 11.2 Příklad PROG_11-01... 11-2 11. David Matoušek Programování v jazyce C v pøíkladech Praha 2011 David Matoušek Programování v jazyce C v pøíkladech Bez pøedchozího písemného svolení nakladatelství nesmí být kterákoli èást kopírována nebo

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

Soustavy. Terminologie. Dva pohledy na soustavu lin. rovnic. Definice: Necht A = (a i,j ) R m,n je matice, b R m,1 je jednosloupcová.

Soustavy. Terminologie. Dva pohledy na soustavu lin. rovnic. Definice: Necht A = (a i,j ) R m,n je matice, b R m,1 je jednosloupcová. [1] Terminologie [2] Soustavy lineárních rovnic vlastnosti množin řešení metody hledání řešení nejednoznačnost zápisu řešení Definice: Necht A = (a i,j ) R m,n je matice, b R m,1 je jednosloupcová matice.

Více

Grafy. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 13.

Grafy. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 13. Grafy doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 13. března 2017 Jiří Dvorský (VŠB TUO) Grafy 104 / 309 Osnova přednášky Grafy

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

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

Algoritmizace, základy programování, VY_32_INOVACE_PRG_ALGO_01

Algoritmizace, základy programování, VY_32_INOVACE_PRG_ALGO_01 Anotace sady: Algoritmizace, základy programování, VY_32_INOVACE_PRG_ALGO_01 Autor: Blanka Sadovská Klíčová slova: Algoritmus, proměnná, diagram Stupeň a typ vzdělávání: gymnaziální vzdělávání, 3. ročník

Více

Příklad 1. Řešení 1a Máme řešit rovnici ŘEŠENÉ PŘÍKLADY Z M1A ČÁST 1. Řešte v R rovnice: 8 3 5 5 2 8 =20+4 1 = + c) = f) +6 +8=4 g) h)

Příklad 1. Řešení 1a Máme řešit rovnici ŘEŠENÉ PŘÍKLADY Z M1A ČÁST 1. Řešte v R rovnice: 8 3 5 5 2 8 =20+4 1 = + c) = f) +6 +8=4 g) h) Příklad Řešte v R rovnice: a) 8 3 5 5 2 8 =20+4 b) = + c) = d) = e) + =2 f) +6 +8=4 g) + =0 h) = Řešení a Máme řešit rovnici 8 3 5 5 2 8 =20+4 Zjevně jde o lineární rovnici o jedné neznámé. Nejprve roznásobíme

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

0.1 Úvod do lineární algebry

0.1 Úvod do lineární algebry Matematika KMI/PMATE 1 01 Úvod do lineární algebry 011 Vektory Definice 011 Vektorem aritmetického prostorur n budeme rozumět uspořádanou n-tici reálných čísel x 1, x 2,, x n Definice 012 Definice sčítání

Více

Lineární spojový seznam (úvod do dynamických datových struktur)

Lineární spojový seznam (úvod do dynamických datových struktur) Lineární spojový seznam (úvod do dynamických datových struktur) Jan Hnilica Počítačové modelování 11 1 Dynamické datové struktury Definice dynamické struktury jsou vytvářeny za běhu programu z dynamicky

Více

Gymnázium Vysoké Mýto nám. Vaňorného 163, Vysoké Mýto

Gymnázium Vysoké Mýto nám. Vaňorného 163, Vysoké Mýto Gymnázium Vysoké Mýto nám. Vaňorného 163, 566 01 Vysoké Mýto Registrační číslo projektu Šablona Autor Název materiálu / Druh CZ.1.07/1.5.00/34.0951 III/2 INOVACE A ZKVALITNĚNÍ VÝUKY PROSTŘEDNICTVÍM ICT

Více

Dynamické datové struktury III.

Dynamické datové struktury III. Dynamické datové struktury III. Halda. Tomáš Bayer bayertom@natur.cuni.cz Katedra aplikované geoinformatiky a kartografie, Přírodovědecká fakulta UK. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované

Více

Determinant matice řádu 5 budeme počítat opakovaným použitím rozvoje determinantu podle vybraného řádku nebo sloupce. Aby byl náš výpočet

Determinant matice řádu 5 budeme počítat opakovaným použitím rozvoje determinantu podle vybraného řádku nebo sloupce. Aby byl náš výpočet Řešené příklady z lineární algebry - část 2 Příklad 2.: Určete determinant matice A: A = 4 4. Řešení: Determinant matice řádu budeme počítat opakovaným použitím rozvoje determinantu podle vybraného řádku

Více