Sada úkolů pro předmět DSA

Save this PDF as:
 WORD  PNG  TXT  JPG

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

Download "Sada úkolů pro předmět DSA"

Transkript

1 Sada úkolů pro předmět DSA A7B36DSA Ing. Martin Chlumecký Katedra počítačů ČVUT v Praze, FEL Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

2 Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Domácí úkoly z předmětu DSA Domácí úkoly Domácí úkoly mají dvě varianty: lehčí a těžší. Lehčí varianta je za jeden bod, těžší vzhledem k větší míře samostatné práce za čtyři body. U řešitelů těžších domácích úkolů se předpokládá znalost Featherweight Javy. Přístupové údaje k repozitáři URL vašeho repozitáře je URL pro brouzdání po vašem repozitáři na webu je Login je vaše uživatelské jméno v síti ČVUT Počáteční heslo je shodné s vaším uživatelským jménem (není se sítí ČVUT synchronizováno) URL pro přihlášení do administračního rozhraní na webu je

3 Zadání lehčích domácích úkolů Lehčí domácí úkoly odevzdávejte přes repozitář. Každý úkol umístěte do adresáře homeworks a souboru homework<n>.java, kde <n> je číslo úkolu. Všechny odevzdávané třídy dělejte neveřejné (aby mohly být v jednom souboru) a neumísťujte je do žádného balíčku. Kromě vašeho kódu neodevzdávejte nic jiného - třídy a rozhraní, která jsou součástí zadání, si k vašemu kódu přilinkujeme sami. Pokud chcete ve zdrojácích používat češtinu, používejte kódování ISO Pokud se ještě s testovacím systémem objeví problémy, dejte o nich (mailem) vědět přednášejícímu nebo cvičícím - jinak se nápravy nedočkáte. První Naimplementujte třídu Homework1 implementující rozhraní Mergesort. interface Mergesort { int[] getfirsthalfof(int[] array); // vrati nesetridenou kopii prvni poloviny (horni celou cast) pole array int[] getsecondhalfof(int[] array); // vrati nesetridenou kopii druhe poloviny (dolni celou cast) pole array int[] merge(int[] firsthalf, int[] secondhalf); // slije prvky v firsthalf a secondhalf do jednoho pole a vrati ho int[] mergesort(int[] array); // vrati setridenou kopii pole array Druhý Naimplementujte třídu Homework2 implementující rozhraní Matrix. Násobení matic musí být implementováno Strassenovým algoritmem, tzn. metoda times volaná na netriviální matici (matici větší než 1 1) musí svůj výsledek získat pouze pomocí volání metod plus, minus a times na podmaticích. Všechny vaše metody by měly fungovat s jakoukoli korektní implementací rozhraní Matrix. /** Rozhrani Matrix reprezentuje ctvercovou matici, jejiz rozmer je mocnina dvojky. interface Matrix { /* Vrati rozmer matice. int getsize(); /* Vrati prvek na indexu n, m (1 <= n <= getsize(), 1 <= m <= getsize()). int getelement(int n, int m); /* Vrati levou horni podmatici. Matrix gettopleftsubmatrix(); /* Vrati pravou horni podmatici. public Matrix gettoprightsubmatrix(); /* Vrati levou dolni podmatici. public Matrix getbottomleftsubmatrix(); /* Vrati pravou dolni podmatici. public Matrix getbottomrightsubmatrix(); /* Vrati soucet matic this a other (muzete predpokladat, ze this.getsize() == other.getsize()).

4 public Matrix plus(matrix other); /* Vrati rozdil matic this a other (muzete predpokladat, ze this.getsize() == other.getsize()). public Matrix minus(matrix other); /* Vrati soucin matic this a other (muzete predpokladat, ze this.getsize() == other.getsize()). public Matrix times(matrix other); class Homework2 implements Matrix { /** Vytvori novou matici (muzete predpokladat, ze contents je ctvercove pole, jehoz rozmer je mocnina dvojky). public Homework2(int[][] contents) { /*... /* Zbytek tridy Homework2. Třetí Naimplementujte třídu Homework3 implementující rozhraní HeapStorage a třídu Heap. Za korektní implementaci třídy Homework3 získáte jeden bod, za korektní implementaci třídyheap další. interface DSAComparable<E> { /** Vrati true, pokud je this (ostre) mensi nez other, false jinak. boolean less(e other); /** Vrati nejmensi prvek ze vsech prvku typu E (tzn. prvek, ktery je mensi nez * jakykoli jiny prvek typu E). Vracena hodnota nezavisi na this, jen na E. E getleastelement(); /** Vrati nejvetsi prvek ze vsech prvku typu E (tzn. prvek, ktery je vetsi * nez jakykoli jiny prvek typu E). Vracena hodnota nezavisi na this, jen na E. E getgreatestelement(); /** Rozhrani HeapStorage reprezentuje pole, do ktereho si halda uklada svoje prvky. interface HeapStorage<E extends DSAComparable<E>> { /** Vrati aktualni velikost HeapStorage. int getsize(); /** Vrati true, pokud je aktualni velikost HeapStorage nulova. boolean isempty(); /** Vrati prvek na indexu index (1 <= index <= getsize()). Pokud je index

5 * mensi nebo roven nule, vrati nejvetsi prvek. Pokud je index vetsi nez * velikost pole, vrati nejmensi prvek. V obou pripadech muzete predpokladat, * ze v HeapStorage je alespon jeden prvek. E getelement(int index); /** Prohodi prvky na indexech index a index2 (1 <= index, index2 <= getsize()). void swap(int index, int index2); /** Odstrani posledni prvek (tzn. snizi velikost teto HeapStorage) a vrati jeho hodnotu. E extractlast(); /** Vlozi prvek a vrati jeho index. Muzete predpokladat, ze ve spodnim poli je dost mista. int insertlast(e element); class Homework3<E extends DSAComparable<E>> implements HeapStorage<E>{ /** Vytvori novy objekt HeapStorage nad polem elements, jeho velikost je stejna jako delka pole. Homework3(E[] elements) { /* kod /* metody /** Trida Heap reprezentuje haldu (s maximem ve vrcholu). class Heap<E extends DSAComparable<E>> { HeapStorage<E> storage; /** Vytvori haldu nad danym HeapStorage (tzn. zavola algoritmus build heap). Heap(HeapStorage<E> storage) { /* kod /** Zavola algoritmus heapify nad uzlem na indexu index. void heapify(int index) { /* kod /** Vlozi do haldy novy prvek. Muzete predpokladat, ze v poli uvnitr HeapStorage na nej misto je. void insert(e element) { /* kod

6 /** Odstrani a vrati z haldy maximalni prvek. E extractmax() { /* kod /** Vrati true, pokud je halda prazdna. boolean isempty() { /* kod /** Pomoci algoritmu trideni haldou vzestupne setridi pole array. static <E extends DSAComparable<E>> void heapsort(e[] array) { /* kod Soutěž Pokud chcete, můžete se zúčastnit soutěže o nejelegantnější implementaci třetího domácího úkolu. Kritéria elegance jsou zejména: srozumitelnost kódu, jeho kompaktnost a jeho snadná modifikovatelnost. Pro přihlášení do soutěže pošlete přednášejícímu, uzávěrka přihlášek je shodná s datem odevzdání úkolu, tj O vítězi rozhodně porota složená z cvičících předmětu, hlavní cena je bod za aktivitu. Čtvrtý Naimplementujte třídu DSAHashTable (kvůli omezení Javy musíte generické pole alokovat takto: (Set<Pair<K, V> >[]) new Set<?>[size]). import java.util.iterator; import java.util.set; /** Trida Pair reprezentuje dvojici (klic, hodnota). class Pair<K,V> { K key; V value;

7 Pair(K k, V v) { key = k; value = v; public int hashcode() { return key.hashcode() + 3 * value.hashcode(); public boolean equals(object other) { if (! (other instanceof Pair<?,?>)) return false; Pair<?,?> o = (Pair<?,?>) other; return key.equals(o.key) && value.equals(o.value); /** Trida DSAHashTable reprezentuje rozptylovaci tabulku se zřetězením (první varianta v učebnici). class DSAHashTable<K,V> { /** Vytvori prazdnou instanci DSAHashTable, delka vnitrniho pole je nastavena na size, obsah vnitrniho pole * je inicializovan na prazdne mnoziny. DSAHashTable(int size) { /* kod /** Ulozi dvojici (key, value) do rozptylovaci tabulky. Pokud uz v tabulce je jina dvojice se stejnym klicem, * je smazana. Klic ani hodnota nesmi byt null. Pokud by pocet dvojic v tabulce po vykonani put mel vzrust nad * dvojnasobek delky vnitrniho pole, vnitrni pole zdvojnasobi. void put(k key, V value) { /* kod /** Vrati hodnotu asociovanou s danym klicem nebo null, pokud dany klic v tabulce neni. V get(k key) { /* kod /** Smaze dvojici s danym klicem. Pokud v tabulce dany klic neni, nedela nic. void remove(k key) { /* kod /** Vrati vnitrni pole. Prvni vnitrniho pole mohou byt instance trid v balicku java.util, tzn. nemusite psat * vlastni implementaci rozhrani java.util.set. Set<Pair<K,V>>[] getarray() { /* kod /** Pro dany klic vrati index v poli. Jako hashovaci funkce se pouzije key.hashcode. int getindexof(k key) { /* kod /** Pokud je pocet prvku mensi nebo roven dvojnasobku delky vnitrniho pole, vrati true, jinak vrati false. boolean isbigenough() { /* kod /** Zmeni delku vnitrniho pole, nainicializuje jej prazdnymi mnozinami a zkopiruje do nej vsechny dvojice. void resize(int newsize) { /* kod

8 /** Vrati iterator pres vsechny dvojice v tabulce. Iterator nemusi mit implementovanou metodu remove. Iterator<Pair<K,V>> iterator() { /* kod Pátý Naimplementujte třídu Tree. import java.util.iterator; interface DSAComparable<E extends DSAComparable<E>> { boolean lessorequal(e other); boolean greater(e other); boolean equal(e other); class Node<E extends DSAComparable<E>> { E contents; private Node<E> parent; Node<E> left, right; /** Vrati naslednika (tzn. uzel obsahujici nejblizssi vyssi hodnotu) tohoto uzlu. Node<E> succ() { if (right!= null) { Node<E> temp = right; while (temp.left!= null) temp = temp.left; return temp; else { Node<E> temp = this; Node<E> parent = this.parent; while (parent!= null && parent.right == temp) { parent = parent.parent; temp = temp.parent; return parent; Node(E elem, Node<E> parent) { this.contents = elem; this.parent = parent;

9 void setparent(node<e> p) { parent = p; /** * Trida Tree reprezentuje binarni vyhledavaci strom, ve kterem pro kazdy uzel n plati * n.left == null n.left.contents.lessorequal(n.contents) a * n.right == null n.right.contents.greater(n.contents). class Tree<E extends DSAComparable<E>> { Node<E> root; /** Vrati minimum z tohoto stromu nebo null, pokud je strom prazdny. E minimum() { /* kod /** Vrati minimum ze zadaneho podstromu nebo null, pokud je podstrom prazdny. E subtreemin(node<e> n) { /* kod /** Vrati maximum z tohoto podstromu nebo null, pokud je strom prazdny. E maximum() { /* kod /** Vrati maximum ze zadaneho podstromu nebo null, pokud je podstrom prazdny. E subtreemax(node<e> n) { /* kod /** Vlozi prvek do stromu, pripadne duplicity ponechava (tzn. stejny prvek muze * byt ve stromu vickrat). void insert(e elem) { /* kod /** * Projde strom smerem za uzlem s hodnotou elem a vrati: * - uzel s hodnotou elem, pokud existuje, * - posledni potkany koncovy uzel (=uzel s maximalne jednim potomkem), pokud uzel s hodnotou elem neexistuje nebo * null pokud je cely strom prazdny. Node<E> find(e elem) { /* kod /** Vrati true, pokud tento strom obsahuje prvek elem. boolean contains(e elem) { /* kod /** Odstrani jeden vyskyt prvku elem z tohoto stromu. void remove(e elem) { /* kod /** Vrati iterator pres cely strom (od nejmensiho po nejvetsi). Iterator<E> iterator() { /* kod /** Vrati iterator prochazejici pres interval [lowerbound, higherbound] vcetne. Iterator<E> boundediterator(e lowerbound, E higherbound) { /* kod /** Vrati korenovy uzel tohoto stromu. Node<E> getrootnode() { /* kod

10 Šestý Dynamické programování je vlastně rekurze zkřížená s memoizací. Samotný rekurzivní popis algoritmu je pro každou úlohu jiný, ale memoizace je pořád stejná - řešení podúloh se zaznamenává do tabulky a znovupoužívá, když je potřeba. Vaším úkolem je naprogramovat metodu Machine.solve, ve které bude právě ta memoizace. Metodasolve by při zavolání měla: 1. mrknout do tabulky a pokud v ní řešení už je, vrátit ho, 2. pokud v tabulce řešení není, měla by si ze zadané úlohy vytáhnout možná podřešení a vybrat to nejlepší (s nejvyšší hodnotou) a 3. před vrácením nejlepšího řešení by si ho měla uložit do tabulky. import java.util.hashmap; import java.util.hashset; import java.util.map; import java.util.set; /** Trida Pair reprezentuje dvojici. class Pair<First, Second> { First first; Second second; Pair(First f, Second s) { first = f; second = s; First getfirst() { return first; Second getsecond() { return second; /** Instance rozhrani Task reprezentuji optimalizacni ulohu. interface Task<T extends Task<T, S, W>, S extends Solution<T, S, W>, W extends Comparable<W>> { /** Vrati vsechna mozna (ne nutne optimalni) reseni teto ulohy. Vzdy vrati alespon jedno reseni. Set<S> getpossiblesolutions(); /** Instance rozhrani Solution reprezentuji reseni nejake konkretni optimalizacni ulohy.

11 interface Solution<T extends Task<T, S, W>, S extends Solution<T, S, W>, W extends Comparable<W>> { /** Vrati hodnotu tohoto reseni. W getworth(machine<t, S, W> m); class Machine<T extends Task<T, S, W>, S extends Solution<T, S, W>, W extends Comparable<W>> { Map<T, Pair<S, W>> cache = new HashMap<T, Pair<S, W>>(); Pair<S, W> solve(t task) { /* kod class RodTask implements Task<RodTask, RodSolution, Integer> { final int length; final int[] table; final Set<RodSolution> sols = new HashSet<RodSolution>(); static int instancecount; RodTask(int length, int[] table) { this.length = length; this.table = table; for (int i = 1; i <= length; i++) sols.add(new RodSolution(i, length - i, table)); instancecount++; public Set<RodSolution> getpossiblesolutions() { return sols; public int hashcode() { int code = length; for (int i : table) code += 3 * i; return code; public boolean equals(object o) { if (!(o instanceof RodTask)) return false; RodTask other = (RodTask) o; if (length!= other.length table.length!= other.table.length) return false; for (int i = 0; i < table.length; i++) if (table[i]!= other.table[i]) return false;

12 return true; class RodSolution implements Solution<RodTask, RodSolution, Integer> { final int first; final int rest; final int[] table; RodSolution(int first, int rest, int[] table) { this.first = first; this.rest = rest; this.table = table; public Integer getworth(machine<rodtask, RodSolution, Integer> m) { int worth = table[first]; if (rest > 0) worth += m.solve(new RodTask(rest, table)).getsecond(); return worth; Sedmý Naprogramujte B-strom. import java.util.list; /** Instance tridy Tree reprezentuji B-strom. class Tree { /** Koren tohoto stromu. Node root; /* atributy /** Vytvori prazdny B-strom se zadanou kapacitou uzlu. Kapacita uzlu je * maximalni pocet klicu, ktere se v jednom uzlu mohou objevit. Tree(int nodecapacity) { /* kod

13 /** Indikuje, jestli tento strom obsahuje zadany klic. boolean contains(integer key) { /* kod /** Prida zadany klic do stromu. Pokud tento strom zadany klic uz obsahuje, * neudela nic. void add(integer key) { /* kod /** Odebere zadany klic ze stromu. Pokud tento strom zadany klic neobsahuje, * neudela nic. void remove(integer key) { /* kod /* kod class Node { /* atributy /** Vrati klice ulozene v tomto uzlu serazene vzestupne. List<Integer> getkeys() { /* kod /** Vrati ukazatele na podstromy ulozene v tomto uzlu serazene v poradi odpovidajicim * poradi klicu. Pozor: vzdy musi platit, ze pocet_ukazatelu_na_podstromy = pocet_klicu + 1, * u listovych uzlu proto musite vracet seznam nullu. List<Node> getsubtrees() { /* kod Zadání těžších domácích úkolů První

14 Ve Featherweight Javě naimplementujte datovou strukturu v C. Okasaki: Purely Functional Data Structures označovanou jako persistent binary random-access list. Pro počáteční nasměrování a dodatečné informace kontaktujte přednášejícího. Základní knihovnu FJ z minulého semestru najdete nahttps://cvut.repositoryhosting.com/trac/cvut_lectures/browser/lecture14/src/lecture14/lecture14.java Druhý Naimplementujte níže uvedené třídy a rozhraní a s jejich pomocí napište následující algoritmy: řazení vkládáním, řazení sléváním, quicksort, quick seleck a řazení haldou. Pokud bude potřeba, můžete níže uvedenou strukturu tříd obohatit o nové metody nebo mírně změnit, ale měli byste zachovat stejného ducha. /** Instance implementujici toto rozhrani reprezentuji multimnozinu, * ktera se po vytvoreni uz nezmeni. interface ImmutableMultiset<E> { /** Vrati sjednoceni teto a zadane multimnoziny. ImmutableMultiset<E> union(immutablemultiset<e> other); /** Vrati rozdil teto a zadane multimnoziny. ImmutableMultiset<E> difference(immutablemultiset<e> other); /** Vrati, zda tato multimnozina obsahuje zadany prvek. ImmutableBoolean contains(e elem); /** Vrati velikost teto multimnoziny. ImmutableInteger size(); /** Instance teto tridy reprezentuji prazdnou multimnozinu. class EmptyMultiset<E> implements ImmutableMultiset<E> { static <E> EmptyMultiset<E> createemptymultiset(); /** Instance teto tridy reprezentuji multimnozinu s jednim prvkem. class SingletonMultiset<E> implements ImmutableMultiset<E> { static <E> SingletonMultiset<E> createsingletonmultiset(e elem); /** Instance teto tridy reprezentuji sjednoceni dvou multimnozin. class Union<E> implements ImmutableMultiset<E> { static <E> Union<E> createunion(immutablemultiset<e> first, ImmutableMultiset<E> second);

15 /** Instance teto tridy reprezentuji rozdil dvou multimnozin. class Difference<E> implements ImmutableMultiset<E> { static <E> Difference<E> createdifference(immutablemultiset<e> first, ImmutableMultiset<E> second); /** Instance implementujici toto rozhrani reprezentuji sekvenci, * ktera se po vytvoreni uz nezmeni. interface ImmutableSequence<E> { /** Vrati spojeni teto a zadane sekvence. ImmutableSequence<E> concat(immutablesequence<e> other); /** Vrati podsekvenci zadane sekvence. Prvni prvek sekvence ma index nula. ImmutableSequence<E> subsequence(immutableinteger from, ImmutableInteger to); /** Vrati delku teto sekvence. ImmutableInteger size(); /** Vrati prvek na zadanem indexu. Prvni prvek ma index nula. E elementat(immutableinteger position); /** Instance teto tridy reprezentuji prazdnou sekvenci. class EmptySequence<E> implements ImmutableSequence<E> { static <E> EmptySequence<E> createemptysequence(); /** Instance teto tridy reprezentuji sekvenci delky jedna. class SingletonSequence<E> implements ImmutableSequence<E> { static <E> SingletonSequence<E> createsingletonsequence(e elem); /** Instance teto tridy reprezentuji spojeni dvou sekvenci. class Concatenation<E> implements ImmutableSequence<E> { static <E> Concatenation<E> createconcatenation(sequence<e> first, Sequence<E> second); /** Instance teto tridy reprezentuji podsekvenci nejake sekvence. class Subsequence<E> implements ImmutableSequence<E> { static <E> Subsequence<E> createsubseqence(sequence<e> seq, ImmutableInteger from, ImmutableInteger to); /** Instance teto tridy reprezentuji cele cislo, ktere se po vytvoreni jiz nezmeni. interface ImmutableInteger { /** Vrati soucet tohoto a zadaneho cisla. ImmutableInteger plus(immutableinteger other);

16 /** Vrati rozdil tohoto a zadaneho cisla. ImmutableInteger minus(immutableinteger other); /** Vrati soucin tohoto a zadaneho cisla. ImmutableInteger times(immutableinteger other); /** Vrati podil tohoto a zadaneho cisla. ImmutableInteger dividedby(immutableinteger other); /** Indikuje, zda je toto cislo mensi, nez zadane. ImmutableBoolean less(immutableinteger other); /** Indikuje, zda je toto cislo shodne jako zadane. ImmutableBoolean equal(immutableinteger other); /** Indikuje, zda je toto cislo vetsi, nez zadane. ImmutableBoolean greater(immutableinteger other); /** Instance teto tridy reprezentuji konstantu. class Constant implements ImmutableInteger { static Constant createconstant(int c); /** Instance teto tridy reprezentuji soucet dvou cisel. class Plus implements ImmutableInteger { static Plus createplus(immutableinteger first, ImmutableInteger second); /** Instance teto tridy reprezentuji rozdil dvou cisel. class Minus implements ImmutableInteger { static Minus createminus(immutableinteger first, ImmutableInteger second); /** Instance teto tridy reprezentuji soucin dvou cisel. class Product implements ImmutableInteger { static Product createproduct(immutableinteger first, ImmutableInteger second); /** Instance teto tridy reprezentuji podil dvou cisel. class Division implements ImmutableInteger { static Division createdivision(immutableinteger first, ImmutableInteger second); /** Instance implementujici toto rozhrani reprezentuji pravdivostni hodnotu, * ktera se po vytvoreni jiz nezmeni. interface ImmutableBoolean {

17 /** Vrati negaci teto hodnoty. ImmutableBoolean not(); /** Vrati konjunkci teto a zadane hodnoty. ImmutableBoolean and(immutableboolean other); /** Vrati disjunkci teto a zadane hodnoty. ImmutableBoolean or(immutableboolean other); /** Instance teto tridy reprezentuji pravdu. class True implements ImmutableBoolean { static True createtrue(); /** Instance teto tridy reprezentuji nepravdu. class False implements ImmutableBoolean { static False createfalse(); /** Instance teto tridy reprezentuji negaci nejake pravdivostni hodnoty. class Negation implements ImmutableBoolean { static Negation createnegation(); /** Instance teto tridy reprezentuji konjunkci dvou pravdivostnich hodnot. class Conjunction implements ImmutableBoolean { static Conjunction createconjunction(immutableboolean other); /** Instance teto tridy reprezentuji disjunkci dvou pravdivostnich hodnot. class Disjunction implements ImmutableBoolean { static Disjunction createdisjunction(immutableboolean other); /** Instance teto tridy reprezentuji multimnozinu. Obsah multimnoziny je reprezentovan * v promenne inner. class DSAMultiset<E> { ImmutableMultiset<E> inner; /* Vytvori a vrati prazdnou multimnozinu. static DSAMultiset createemptymultiset(); /* Vytvori a vrati multimnozinu s jednim prvkem. static <E> DSAMultiset<E> createsingletonmultiset(e elem); /* Prida zadany prvek do teto multimnoziny.

18 void add(e elem); /* Prida vsechny prvky v zadane multimnozine do teto multimnoziny. void addall(dsamultiset<e> ms); /* Odstrani zadany prvek z teto multimnoziny. void remove(e elem); /* Odstrani vzechny prvky v zadane multimnozine z teto multimnoziny. void removeall(dsamultiset<e> elem); /* Vyrobi kopii teto multimnoziny. DSAMultiset<E> clone(); /* Vrati velikost teto multimnoziny. ImmutableInteger size(); /* Indikuje, zda tato mnozina obsahuje zadany prvek. ImmutableBoolean contains(e elem); /** Instance teto tridy reprezentuji sekvenci. Obsah sekvence je reprezentovan * v promenne inner. class DSASequence<E> { ImmutableSequence<E> inner; /* Vytvori a vrati prazdnou sekvenci. static DSASequence createemptysequence(); /* Vytvori a vrati multimnozinu o delce jedna. static <E> DSASequence<E> createsingletonsequence(e elem); /* Pripoji zadanou sekvenci do teto sekvence. DSASequence<E> append(dsasequence<e> other); /* Pripoji zadanou sekvenci na zacatek teto sekvence. DSASequence<E> prepend(dsasequence<e> other); /* Vrati podsekvenci teto sekvence (jako nezavisly objekt). DSASequence<E> subseq(immutableinteger from, ImmutableInteger to); /* Vrati velikost teto sekvence. ImmutableInteger size(); /* Vrati prvek na zadanem indexu, prvni prvek ma index nula. E elementat(immutableinteger elem);

Abstraktní datové typy: zásobník

Abstraktní datové typy: zásobník Abstraktní datové typy: zásobník doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Abstraktní datové typy omezené rozhraní

Více

Volné stromy. Úvod do programování. Kořenové stromy a seřazené stromy. Volné stromy

Volné stromy. Úvod do programování. Kořenové stromy a seřazené stromy. Volné stromy Volné stromy Úvod do programování Souvislý, acyklický, neorientovaný graf nazýváme volným stromem (free tree). Často vynecháváme adjektivum volný, a říkáme jen, že daný graf je strom. Michal Krátký 1,Jiří

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

V případě jazyka Java bychom abstraktní datový typ Time reprezentující čas mohli definovat pomocí třídy takto:

V případě jazyka Java bychom abstraktní datový typ Time reprezentující čas mohli definovat pomocí třídy takto: 20. Programovací techniky: Abstraktní datový typ, jeho specifikace a implementace. Datový typ zásobník, fronta, tabulka, strom, seznam. Základní algoritmy řazení a vyhledávání. Složitost algoritmů. Abstraktní

Více

2 Datové struktury. Pole Seznam Zásobník Fronty FIFO Haldy a prioritní fronty Stromy Hash tabulky Slovníky

2 Datové struktury. Pole Seznam Zásobník Fronty FIFO Haldy a prioritní fronty Stromy Hash tabulky Slovníky Pole Seznam Zásobník Fronty FIFO Haldy a prioritní fronty Stromy Hash tabulky Slovníky 25 Pole Datová struktura kolekce elementů (hodnot či proměnných), identifikovaných jedním nebo více indexy, ze kterých

Více

Datové struktury. alg12 1

Datové struktury. alg12 1 Datové struktury Jedna z klasických knih o programování (autor prof. Wirth) má název Algorithms + Data structures = Programs Datová struktura je množina dat (prvků, složek, datových objektů), pro kterou

Více

Kolekce, cyklus foreach

Kolekce, cyklus foreach Kolekce, cyklus foreach Jen informativně Kolekce = seskupení prvků (objektů) Jednu již známe pole (Array) Kolekce v C# = třída, která implementuje IEnumerable (ICollection) Cyklus foreach ArrayList pro

Více

Úvod Třídy Rozhraní Pole Konec. Programování v C# Hodnotové datové typy, řídící struktury. Petr Vaněček 1 / 39

Úvod Třídy Rozhraní Pole Konec. Programování v C# Hodnotové datové typy, řídící struktury. Petr Vaněček 1 / 39 Programování v C# Hodnotové datové typy, řídící struktury Petr Vaněček 1 / 39 Obsah přednášky Referenční datové typy datové položky metody přístupové metody accessory, indexery Rozhraní Pole 2 / 39 Třídy

Více

Příklad : String txt1 = new String( Ahoj vsichni! ); //vytvoří instanci třídy String a přiřadí ji vnitřní hodnotu Ahoj vsichni!

Příklad : String txt1 = new String( Ahoj vsichni! ); //vytvoří instanci třídy String a přiřadí ji vnitřní hodnotu Ahoj vsichni! Java práce s řetězci Trochu povídání.. Řetězce jsou v Javě reprezentovány instancemi tříd StringBuffer a String. Tyto třídy jsou součástí balíčku java.lang, tudíž je možno s nimi pracovat ihned bez nutného

Více

Projekt Obrázek strana 135

Projekt Obrázek strana 135 Projekt Obrázek strana 135 14. Projekt Obrázek 14.1. Základní popis, zadání úkolu Pracujeme na projektu Obrázek, který je ke stažení na http://java.vse.cz/. Po otevření v BlueJ vytvoříme instanci třídy

Více

1. Programování proti rozhraní

1. Programování proti rozhraní 1. Programování proti rozhraní Cíl látky Cílem tohoto bloku je seznámení se s jednou z nejdůležitější programátorskou technikou v objektově orientovaném programování. Tou technikou je využívaní rozhraní

Více

Seminář Java II p.1/43

Seminář Java II p.1/43 Seminář Java II Seminář Java II p.1/43 Rekapitulace Java je case sensitive Zdrojový kód (soubor.java) obsahuje jednu veřejnou třídu Třídy jsou organizovány do balíků Hierarchie balíků odpovídá hierarchii

Více

Využití OOP v praxi -- Knihovna PHP -- Interval.cz

Využití OOP v praxi -- Knihovna PHP -- Interval.cz Page 1 of 6 Knihovna PHP Využití OOP v praxi Po dlouhé teorii přichází na řadu praxe. V následujícím textu si vysvětlíme možnosti přístupu k databázi pomocí různých vzorů objektově orientovaného programování

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

7. Dynamické datové struktury

7. Dynamické datové struktury 7. Dynamické datové struktury Java poskytuje několik možností pro uložení většího množství dat (tj. objektů či primitivních datových typů) v paměti. S nejjednodušší z nich, s polem, jsme se již seznámili.

Více

Proměnné a datové typy

Proměnné a datové typy Proměnné a datové typy KAPITOLA 2 V této kapitole: Primitivní datové typy Proměnné Opakování Mezi základní dovednosti každého programátora bezesporu patří dobrá znalost datových typů. Ta vám umožní efektivní

Více

19. Projekt Adventura

19. Projekt Adventura Projekt Adventura strana 189 19. Projekt Adventura 19.1. Základní popis, zadání úkolu Pracujeme na projektu Adventura, který je ke stažení na java.vse.cz. Po otevření v BlueJ vytvoříme instanci třídy Hra.

Více

map, multimap - Asociativní pole v C++.

map, multimap - Asociativní pole v C++. map, multimap - Asociativní pole v C++. Jedná se o asociativní pole. V asociativním poli jsou uloženy hodnoty ve tvaru (klíč,hodnota), kde klíč je vlastně "index" prvku. Klíčem může být libovolný objekt,

Více

1. Téma 12 - Textové soubory a výjimky

1. Téma 12 - Textové soubory a výjimky 1. Téma 12 - Textové soubory a výjimky Cíl látky Procvičit práci se soubory s využitím výjimek. 1.1. Úvod Program, aby byl programem, my mít nějaké výstupy a vstupy. Velmi častým případem je to, že se

Více

Datové struktury strana 81

Datové struktury strana 81 Datové struktury strana 81 10. Datové struktury Tato kapitola popisuje, jak uchovávat více instancí stejného typu (stejné třídy) nebo jeho podtypů. Vzhledem k tomu, že je to poměrně častá úloha, většina

Více

Vlákno odlehčený proces kód vlákna, zásobník privátní ostatní sdíleno s dalšími vlákny téhož procesu

Vlákno odlehčený proces kód vlákna, zásobník privátní ostatní sdíleno s dalšími vlákny téhož procesu Procesy, vlákna Vlákno odlehčený proces kód vlákna, zásobník privátní ostatní sdíleno s dalšími vlákny téhož procesu Implementace vláken one-to-one o implementace na úrovni jádra o každé vlákno je pro

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

4.4.2012. Obsah přednášky. Příkaz for neúplný. Příkaz for příklady. Cyklus for each (enhanced for loop) Příkaz for příklady

4.4.2012. Obsah přednášky. Příkaz for neúplný. Příkaz for příklady. Cyklus for each (enhanced for loop) Příkaz for příklady Základy programování (IZAPR, IZKPR) Přednáška 5 Ing. Michael Bažant, Ph.D. Katedra softwarových technologií Kancelář č. 03 022, Náměstí Čs. legií Michael.Bazant@upce.cz Obsah přednášky Příkazy cyklu -

Více

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

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

Více

Datové typy strana 29

Datové typy strana 29 Datové typy strana 29 3. Datové typy Jak již bylo uvedeno, Java je přísně typový jazyk, proto je vždy nutno uvést datový typ datového atributu, formálního parametru metody, návratové hodnoty metody nebo

Více

Základní datové struktury

Základní datové struktury Základní datové struktury Martin Trnečka Katedra informatiky, Přírodovědecká fakulta Univerzita Palackého v Olomouci 4. listopadu 2013 Martin Trnečka (UPOL) Algoritmická matematika 1 4. listopadu 2013

Více

7.5 Diagram tříd pokročilé techniky

7.5 Diagram tříd pokročilé techniky 7.5 Diagram tříd pokročilé techniky Stereotypy - jeden ze základních prostředků rozšiřitelnosti UML - pro modelovací konstrukce neexistující v UML, ale podobné předdefinované v UML definované uživatelem

Více

Stream API. Petr Krajča. Základy programovaní 4 (Java) Katedra informatiky Univerzita Palackého v Olomouci

Stream API. Petr Krajča. Základy programovaní 4 (Java) Katedra informatiky Univerzita Palackého v Olomouci Základy programovaní 4 (Java) Stream API Petr Krajča Katedra informatiky Univerzita Palackého v Olomouci Petr Krajča (UP) KMI/ZP4JV 5. listopad, 2014 1 / 10 Stream API Java 8 nový přístup k práci s kolekcemi

Více

1. Převeďte dané číslo do dvojkové, osmičkové a šestnáctkové soustavy: a) 759 10 b) 2578 10

1. Převeďte dané číslo do dvojkové, osmičkové a šestnáctkové soustavy: a) 759 10 b) 2578 10 Úlohy- 2.cvičení 1. Převeďte dané číslo do dvojkové, osmičkové a šestnáctkové soustavy: a) 759 10 b) 2578 10 2. Převeďte dané desetinné číslo do dvojkové soustavy (DEC -> BIN): a) 0,8125 10 b) 0,35 10

Více

17. Projekt Trojúhelníky

17. Projekt Trojúhelníky Projekt Trojúhelníky strana 165 17. Projekt Trojúhelníky 17.1. Základní popis, zadání úkolu Pracujeme na projektu Trojúhelníky, který je ke stažení na java.vse.cz. Aplikace je napsána s textovým uživatelským

Více

IAJCE Přednáška č. 8. double tprumer = (t1 + t2 + t3 + t4 + t5 + t6 + t7) / 7; Console.Write("\nPrumerna teplota je {0}", tprumer);

IAJCE Přednáška č. 8. double tprumer = (t1 + t2 + t3 + t4 + t5 + t6 + t7) / 7; Console.Write(\nPrumerna teplota je {0}, tprumer); Pole (array) Motivace Častá úloha práce s větším množstvím dat stejného typu o Př.: průměrná teplota za týden a odchylka od průměru v jednotlivých dnech Console.Write("Zadej T pro.den: "); double t = Double.Parse(Console.ReadLine());

Více

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

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

Více

7. Datové typy v Javě

7. Datové typy v Javě 7. Datové typy v Javě Primitivní vs. objektové typy Kategorie primitivních typů: integrální, boolean, čísla s pohyblivou řádovou čárkou Pole: deklarace, vytvoření, naplnění, přístup k prvkům, rozsah indexů

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

Datové typy a struktury

Datové typy a struktury atové typy a struktury Jednoduché datové typy oolean = logická hodnota (true / false) K uložení stačí 1 bit často celé slovo (1 byte) haracter = znak Pro 8-bitový SII kód stačí 1 byte (256 možností) Pro

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

Práce se soubory v Javě

Práce se soubory v Javě Práce se soubory v Javě Cílem kapitoly je naučit pracovat se soubory a adresáři v Javě. Na jednoduchých příkladech ukázat procházení adresáře, čtení z textového souboru a zápis do textového souboru. Klíčové

Více

TÉMATICKÝ OKRUH TZD, DIS a TIS

TÉMATICKÝ OKRUH TZD, DIS a TIS TÉMATICKÝ OKRUH TZD, DIS a TIS Číslo otázky : 13. Otázka : Základní datové struktury (pole, zásobník, binární strom atd.), datové struktury vhodné pro fyzickou implementaci relačních dat v SŘBD (hašovací

Více

Kapitola 7: Návrh relačních databází. Nástrahy relačního návrhu. Příklad. Rozklad (dekompozice)

Kapitola 7: Návrh relačních databází. Nástrahy relačního návrhu. Příklad. Rozklad (dekompozice) - 7.1 - Kapitola 7: Návrh relačních databází Nástrahy návrhu relačních databází Dekompozice (rozklad) Normalizace použitím funkčních závislostí Nástrahy relačního návrhu Návrh relačních databází vyžaduje

Více

Windows je registrovaná obchodní známka firmy Microsoft v USA a v ostatních zemích.

Windows je registrovaná obchodní známka firmy Microsoft v USA a v ostatních zemích. Sun, Sun Microsystems, Java a všechny obchodní známky a loga obsahující Sun nebo Java jsou ochrannými známkami nebo registrovanými ochrannými známkami firmy Sun Microsystems, Inc. v USA a v ostatních zemích.

Více

InnoDB transakce, cizí klíče, neumí fulltext (a nebo už ano?) CSV v textovém souboru ve formátu hodnot oddělených čárkou

InnoDB transakce, cizí klíče, neumí fulltext (a nebo už ano?) CSV v textovém souboru ve formátu hodnot oddělených čárkou MySQL Typy tabulek Storage Engines MyISAM defaultní, neumí transakce, umí fulltext InnoDB transakce, cizí klíče, neumí fulltext (a nebo už ano?) MEMORY (HEAP) v paměti; neumí transakce ARCHIVE velké množství

Více

ROZHODOVACÍ PROCEDURY A VERIFIKACE PAVEL SURYNEK, KTIML HTTP://KTIML.MFF.CUNI.CZ/~SURYNEK/NAIL094

ROZHODOVACÍ PROCEDURY A VERIFIKACE PAVEL SURYNEK, KTIML HTTP://KTIML.MFF.CUNI.CZ/~SURYNEK/NAIL094 10 ROZHODOVACÍ PROCEDURY A VERIFIKACE PAVEL SURYNEK, KTIML HTTP://KTIML.MFF.CUNI.CZ/~SURYNEK/NAIL094 Matematicko-fyzikální fakulta Univerzita Karlova v Praze 1 ROZHODOVÁNÍ TEORIÍ POMOCÍ SAT ŘEŠIČE (SMT)

Více

Jakub Čermák <jakub@jcermak.cz> http://www.jcermak.cz. Microsoft Student Partner

Jakub Čermák <jakub@jcermak.cz> http://www.jcermak.cz. Microsoft Student Partner Jakub Čermák http://www.jcermak.cz Microsoft Student Partner Úvod, příklady použití, trocha teorie Struktura aplikace Typy obecně, primitivní typy, speciální typy Podmínky, cykly, namespaces

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

MySQLi (objektově) Příklad vytvoření instance třídy včetně parametrů pro připojení: $mysqli = new mysqli('localhost', 'login', 'heslo', 'databaze');

MySQLi (objektově) Příklad vytvoření instance třídy včetně parametrů pro připojení: $mysqli = new mysqli('localhost', 'login', 'heslo', 'databaze'); MySQLi (objektově) Rozšíření PHP MySQL - základní rozšíření umožňující práci s MySQL. Doporučuje se ho používat pouze do verze MySQL 4.1.3. I když je funkční i u novějších verzí, neumožňuje využití nových

Více

24.5.2008 Jaku b Su ch ý 1

24.5.2008 Jaku b Su ch ý 1 Drupal API 24.5.2008 Jaku b Su ch ý 1 Témata Práce s databází Bezpečnost práce s Drupalem Forms API Jak udělat vlastní modul Hooks Lokalizace 24.5.2008 Jaku b Su ch ý 2 Práce s databází Drupal poskytuje

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

Datové abstrakce v programovacích jazycích

Datové abstrakce v programovacích jazycích Datové abstrakce v programovacích jazycích Motivace Strukturovat rozsáhlé programy Dovolit separátní překlad Možné formy strukturování: Podprogramy původní forma abstrakce -abstrakce výpočtů Moduly kontejnery

Více

Algoritmy I, složitost

Algoritmy I, složitost A0B36PRI - PROGRAMOVÁNÍ Algoritmy I, složitost České vysoké učení technické Fakulta elektrotechnická v 1.01 Rychlost... Jeden algoritmus (program, postup, metoda ) je rychlejší než druhý. Co ta věta znamená??

Více

Java aplety. Předávání parametrů z HTML

Java aplety. Předávání parametrů z HTML Java aplety Aplety jsou speciální formou Java aplikací - mohou být spouštěny z prostředí WWW prohlížeče. Aby je prohlížeč spustil, musíme vložit do HTML stránky potřebné příkazy:

Více

Komunikace se serverem IPAS skrze knihovnu clsipas

Komunikace se serverem IPAS skrze knihovnu clsipas Komunikace se serverem IPAS skrze knihovnu clsipas - 1 - Seznámení se systémem Server IPAS Server IPAS je výkonným jádrem pro registraci CZ, generických a ostatních domén. V budoucnu se IPAS stane jádrem

Více

3. Třídy. Základní pojmy objektového programování. Třídy

3. Třídy. Základní pojmy objektového programování. Třídy 3. Třídy Základní pojmy objektového programování Jak už víme, je Java objektovým programovacím jazykem. V úvodu této kapitoly si objasníme základní pojmy objektové teorie. Objekt představuje souhrn dat

Více

POSTUP PRO VYTVOŘENÍ STRUKTUR PRO UKLÁDÁNÍ RDF DAT V ORACLE

POSTUP PRO VYTVOŘENÍ STRUKTUR PRO UKLÁDÁNÍ RDF DAT V ORACLE POSTUP PRO VYTVOŘENÍ STRUKTUR PRO UKLÁDÁNÍ RDF DAT V ORACLE Upozornění: Pro práci s RDF Oracle daty je třeba mít nainstalován Oracle Spatial Resource Description Framework (RDF). 1. Vytvoření tabulkového

Více

VÝUKOVÝ MATERIÁL. Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632 Číslo projektu

VÝUKOVÝ MATERIÁL. Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632 Číslo projektu VÝUKOVÝ MATERIÁL Identifikační údaje školy Vyšší odborná škola a Střední škola, Varnsdorf, příspěvková organizace Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632

Více

Informační systém webhostingu

Informační systém webhostingu VYSOKÁ ŠKOLA BÁŇSKÁ TECHNICKÁ UNIVERZITA OSTRAVA INFORMAČNÍ SYSTÉMY A DATOVÉ SKLADY Informační systém webhostingu semestrální projekt Analýza Číslo skupiny: 4 Členové: Filip Bartman Jakub Vaněk Jan Šrámek

Více

Začínáme s vývojem pro Android

Začínáme s vývojem pro Android Pavel Petřek CTO Praha, 14. dubna 2010 Kdo je kdo Pavel Petřek Vývojář, přednášející, entusiasta světa chytrých telefonů (a velký jedlík) Spoluzakladatel Inmite Inmite Vývoj pro chytré telefony (Android:

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

Projekt programu Inženýrská Informatika 2

Projekt programu Inženýrská Informatika 2 Projekt programu Inženýrská Informatika 2 Realizace grafu v jazyce Java Ústav počítačové a řídicí techniky, VŠCHT Praha Řešitel: Jan Hornof (ININ 258) Vedoucí: doc. Ing. Jaromír Kukal, Ph.D. 1. Obsah 1.

Více

Agenda. Docházka Návrat k minulému praktickému cvičení Zápočtové práce. Dokumentace. Dotazy, přání, stížnosti. Co, jak a proč dokumentovat

Agenda. Docházka Návrat k minulému praktickému cvičení Zápočtové práce. Dokumentace. Dotazy, přání, stížnosti. Co, jak a proč dokumentovat QA & Dokumentace Agenda Docházka Návrat k minulému praktickému cvičení Zápočtové práce QA opakování Dokumentace Co, jak a proč dokumentovat Dotazy, přání, stížnosti Kde je chyba? public static StringBuilder

Více

Kód. Proměnné. #include <iostream> using namespace std; int main(void) { cout << "Hello world!" << endl; cin.get(); return 0; }

Kód. Proměnné. #include <iostream> using namespace std; int main(void) { cout << Hello world! << endl; cin.get(); return 0; } Jazyk C++ Jazyk C++ je nástupcem jazyka C. C++ obsahuje skoro celý jazyk C, ale navíc přidává vysokoúrovňové vlastnosti vyšších jazyků. Z toho plyne, že (skoro) každý platný program v C je také platným

Více

Iterátory v C++. int pole[20]; for (int *temp = pole, temp!= &pole[20]; temp++) { *temp = 0;

Iterátory v C++. int pole[20]; for (int *temp = pole, temp!= &pole[20]; temp++) { *temp = 0; Iterátory v C++. Iterátor v C++ je vlastně taková obdoba ukazatelů pro kontejnery. Dříve, než se dostaneme k bližšímu vysvětlení pojmu iterátor, ukážeme si jednoduchý příklad, jak pracovat s obyčejným

Více

Microsoft Office. Excel vyhledávací funkce

Microsoft Office. Excel vyhledávací funkce Microsoft Office Excel vyhledávací funkce Karel Dvořák 2011 Vyhledávání v tabulkách Vzhledem ke skutečnosti, že Excel je na mnoha pracovištích používán i jako nástroj pro správu jednoduchých databází,

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

Radomíra Duží L06615. Datový typ množina

Radomíra Duží L06615. Datový typ množina Radomíra Duží L06615 Datový typ množina Množina slouží k uložení prvků stejného bázového ordinárního typu. Bázové typy - jsou typy, jejichž hodnot mohou prvky množiny nabývat. Nesmí obsahovat více než

Více

Rezervační systém Tvorba WWW stránek

Rezervační systém Tvorba WWW stránek 2012 Rezervační systém Tvorba WWW stránek Vytvoření rezervačního systému pro rezervaci motokár,ubytování a atrakcí Marek Svoboda Motokáry Motobydlo 30.12.2012 Obsah 1.Základní charakteristika... 3 a) Téma

Více

Object Pascal je přísně typový procedurální jazyk, který umožňuje jak strukturované, tak objektově orientované programování.

Object Pascal je přísně typový procedurální jazyk, který umožňuje jak strukturované, tak objektově orientované programování. Delphi lekce 6 Minimum z Object Pascalu Vrátíme se ještě k základům Object Pascalu. Struktura programu Object Pascal je přísně typový procedurální jazyk, který umožňuje jak strukturované, tak objektově

Více

Texty k Programování na VŠFS. Petr Kučera () Texty k Programování na VŠFS 29. května 2006 1 / 117

Texty k Programování na VŠFS. Petr Kučera () Texty k Programování na VŠFS 29. května 2006 1 / 117 Texty k Programování na VŠFS Petr Kučera 29. května 2006 Petr Kučera () Texty k Programování na VŠFS 29. května 2006 1 / 117 Obsah Základní informace k předmětu Dynamicky alokovaná paměť Jednoduché dynamicky

Více

Implementační manuál aplikace Essox Lite pro programátora/webmastera e-shopu

Implementační manuál aplikace Essox Lite pro programátora/webmastera e-shopu Implementační manuál aplikace Essox Lite pro programátora/webmastera e-shopu Obchodní a technická podpora ESSOX: Marek Ťoupalík, tel: 724366204, e-mail: marek.toupalik@essox.cz Obsah Úvod... 2 Implementace...

Více

Skriptovací jazyky. Obsah

Skriptovací jazyky. Obsah Skriptovací jazyky doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Obsah Co je to skriptovací jazyk? Výhody a nevýhody

Více

Virtuální metody - polymorfizmus

Virtuální metody - polymorfizmus - polymorfizmus - potomka lze použít v místě, kde je možné použít předka - v dosud probraných situacích byly vždy volány funkce, které jsou známy již v době překladu. V situaci, kdy v době překladu není

Více

Složitější domény. Petr Štěpánek. S využitím materialu Krysztofa R. Apta

Složitější domény. Petr Štěpánek. S využitím materialu Krysztofa R. Apta Složitější domény Petr Štěpánek S využitím materialu Krysztofa R. Apta 2006 Logické programování 11 1 V této části se budeme zabývat seznamy a binárními stromy. Naším cílem není tyto datové struktury podrobně

Více

Rozhraní SAX, SAX vs. SAX2. Jaroslav Ciml

Rozhraní SAX, SAX vs. SAX2. Jaroslav Ciml Rozhraní SAX, SAX vs. SAX2 Jaroslav Ciml Použití SAX - připomenutí Vytvoření instance parseru XMLReader xmlreader = XMLReaderFactory.createXMLReader(); Registrace handleru xmlreader.setcontenthandler(

Více

Knihovna XmlLib TXV 003 63.01 druhé vydání říjen 2012 změny vyhrazeny

Knihovna XmlLib TXV 003 63.01 druhé vydání říjen 2012 změny vyhrazeny Knihovna XmlLib TXV 003 63.01 druhé vydání říjen 2012 změny vyhrazeny 1 TXV 003 63.01 Historie změn Datum Vydání Popis změn Prosinec 2010 1 První vydání, popis odpovídá XmlLib_v13 Říjen 2012 2 Druhé vydání,

Více

Datové struktury a datové typy.

Datové struktury a datové typy. Datové struktury a datové typy. Základní datové typy. Odvozené datové typy. Základní datové struktury. Odvozené datové struktury. Tomáš Bayer bayertom@natur.cuni.cz Katedra aplikované geoinformatiky a

Více

Knihovna XmlLib TXV 003 63.01 první vydání prosinec 2010 změny vyhrazeny

Knihovna XmlLib TXV 003 63.01 první vydání prosinec 2010 změny vyhrazeny Knihovna XmlLib TXV 003 63.01 první vydání prosinec 2010 změny vyhrazeny 1 TXV 003 63.01 Historie změn Datum Vydání Popis změn Prosinec 2010 1 První vydání, popis odpovídá XmlLib_v13 OBSAH 1 Úvod...3 2

Více

Typ 2 - připojení prostřednictvím kódu nativního klienta pro přístup k síti

Typ 2 - připojení prostřednictvím kódu nativního klienta pro přístup k síti Práce s databází Specifikace JDBC Pro práci s relačními databázemi poskytuje Java rozhraní JDBC Java Database Connectivity. Specifikace tohoto rozhraní má několik verzí. Verze 1.x je součástí SDK již od

Více

Plánování a vývoj základního frameworku

Plánování a vývoj základního frameworku Shrnutí KAPITOLA 2 Plánování a vývoj základního frameworku Nyní, když máme jasno v tom, co nás v této knize čeká a proč, můžeme začít s vývojem našeho sociálního webu. Abychom zajistili rychlý postup vývoje,

Více

7.3 Diagramy tříd - základy

7.3 Diagramy tříd - základy 7.3 Diagramy tříd - základy - popisuje typy objektů a statické vztahy mezi nimi Objednávka -datumpřijetí -předplacena -číslo -cena +vyřiď() +uzavři() {if Objednávka.zákazník.charakteristika = 'nejistý'

Více

Copyright Rudolf Pecinovský, Soubor: 11_Kontejnery a datovody.doc, verze 1.00.2413, uloženo st 10.12.2014 10:33 1 z 43. Kontejnery a datovody

Copyright Rudolf Pecinovský, Soubor: 11_Kontejnery a datovody.doc, verze 1.00.2413, uloženo st 10.12.2014 10:33 1 z 43. Kontejnery a datovody Copyright Rudolf Pecinovský, Soubor: 11_Kontejnery a datovody.doc, verze 1.00.2413, uloženo st 10.12.2014 10:33 1 z 43 Kontejnery a datovody Obsah Copyright Rudolf Pecinovský, Soubor: 11_Kontejnery a datovody.doc,

Více

Lokální definice (1) plocha-kruhu

Lokální definice (1) plocha-kruhu Lokální definice (1) syntaxe: (local (seznam definic) výraz) definice jsou dostupné pouze uvnitř příkazu local příklad: (local ( (define Pi 3.1415926) (define (plocha-kruhu r) (* Pi r r)) ) (plocha-kruhu

Více

Jazyk C++ II. Šablony a implementace

Jazyk C++ II. Šablony a implementace Jazyk C++ II Šablony a implementace AR 2013/2014 Jazyk C++ II Úvod Dědičnost a kompozice nejsou vždy tou správnou odpovědí na požadavky znovupoužitelnosti kódu. Proto máme možnost definování určité třídy

Více

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

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

Více

Disjunktivní a konjunktivní lní tvar formule. 2.přednáška

Disjunktivní a konjunktivní lní tvar formule. 2.přednáška Disjunktivní a konjunktivní normáln lní tvar formule 2.přednáška Disjunktivní normáln lní forma Definice Řekneme, že formule ( A ) je v disjunktivním normálním tvaru (formě), zkráceně v DNF, jestliže je

Více

WPA - Konfigurace Java EE aplikace (Maven, struktura war arch. kontejnerem Tomcat 8

WPA - Konfigurace Java EE aplikace (Maven, struktura war arch. kontejnerem Tomcat 8 WPA - Konfigurace EE aplikace (Maven, struktura war archivů), práce s webovým kontejnerem 8 1. října 2014 Obsah 1 2 3 4 Maven Konfigurace maven projektu - pom.xml 5 6 ? Semestrálky mohou dělat dohromady

Více

Internet cvičení. ZS 2009/10, Cvičení 3.,8.12.2009. Tomáš Pop. DISTRIBUTED SYSTEMS RESEARCH GROUP http://dsrg.mff.cuni.cz

Internet cvičení. ZS 2009/10, Cvičení 3.,8.12.2009. Tomáš Pop. DISTRIBUTED SYSTEMS RESEARCH GROUP http://dsrg.mff.cuni.cz Internet cvičení ZS 2009/10, Cvičení 3.,8.12.2009 Tomáš Pop DISTRIBUTED SYSTEMS RESEARCH GROUP http://dsrg.mff.cuni.cz CHARLES UNIVERSITY PRAGUE Faculty of Mathematics and Physics Java Script obecně Moc

Více

Definice. B-stromu. B-strom řádu m je strom, kde každý uzel má maximálně m následníků a ve kterém platí:

Definice. B-stromu. B-strom řádu m je strom, kde každý uzel má maximálně m následníků a ve kterém platí: B-Strom Definice B-stromu B-strom řádu m je strom, kde každý uzel má maximálně m následníků a ve kterém platí: 1. Počet klíčů v každém vnitřním uzlu, je o jednu menší než je počet následníků (synů) 2.

Více

Používáme pole a kolekce

Používáme pole a kolekce Kapitola Po přečtení této kapitoly budete schopni: Deklarovat, inicializovat a používat proměnné typu pole Deklarovat, inicializovat a používat proměnné různých typů kolekcí Nyní již víte, jak vytvářet

Více

1. Téma 03 - Rozhodování

1. Téma 03 - Rozhodování 1. Téma 03 - Rozhodování Cíl látky Seznámit se a prakticky si vyzkoušet zápis rozhodování v jazyce Java 1.1. Úvod Jednou z nejčastěji používanou konstrukcí při programování je rozhodování. Právě této problematice

Více

PB161 Programování v jazyku C++

PB161 Programování v jazyku C++ PB161 Programování v jazyku C++ Textové řetězce (2. část) Vstupy a výstupy STL Základ (0. část) Manipulátory Kontejnery Iterátory Algoritmy Řetězce ve stylu C++ Používá se třída string. Řetězec ve stylu

Více

Metodické pokyny pro práci s modulem Řešitel v tabulkovém procesoru Excel

Metodické pokyny pro práci s modulem Řešitel v tabulkovém procesoru Excel Metodické pokyny pro práci s modulem Řešitel v tabulkovém procesoru Excel Modul Řešitel (v anglické verzi Solver) je určen pro řešení lineárních i nelineárních úloh matematického programování. Pro ilustraci

Více

PARADIGMATA PROGRAMOVÁNÍ 2A INTERPRET S VEDLEJŠÍMI EFEKTY A MAKRY

PARADIGMATA PROGRAMOVÁNÍ 2A INTERPRET S VEDLEJŠÍMI EFEKTY A MAKRY KATEDRA INFORMATIKY, PŘÍRODOVĚDECKÁ FAKULTA UNIVERZITA PALACKÉHO, OLOMOUC PARADIGMATA PROGRAMOVÁNÍ 2A INTERPRET S VEDLEJŠÍMI EFEKTY A MAKRY VÝVOJ TOHOTO UČEBNÍHO MATERIÁLU JE SPOLUFINANCOVÁN EVROPSKÝM

Více

- znakové konstanty v apostrofech, např. a, +, (znak mezera) - proměnná zabírá 1 byte, obsahuje kód příslušného znaku

- znakové konstanty v apostrofech, např. a, +, (znak mezera) - proměnná zabírá 1 byte, obsahuje kód příslušného znaku Znaky - standardní typ char var Z, W: char; - znakové konstanty v apostrofech, např. a, +, (znak mezera) - proměnná zabírá 1 byte, obsahuje kód příslušného znaku - v TP (často i jinde) se používá kódová

Více

Kapitola 4: SQL. Základní struktura

Kapitola 4: SQL. Základní struktura - 4.1 - Kapitola 4: SQL Základní struktura Množinové operace Souhrnné funkce Nulové hodnoty Vnořené poddotazy (Nested sub-queries) Odvozené relace Pohledy Modifikace databáze Spojené relace Jazyk definice

Více

Programy na PODMÍNĚNÝ příkaz IF a CASE

Programy na PODMÍNĚNÝ příkaz IF a CASE Vstupy a výstupy budou vždy upraveny tak, aby bylo zřejmé, co zadáváme a co se zobrazuje. Není-li určeno, zadáváme přirozená čísla. Je-li to možné, používej generátor náhodných čísel vysvětli, co a jak

Více

Návod na velmi jednoduchý import z XLS souboru včetně atributů

Návod na velmi jednoduchý import z XLS souboru včetně atributů Návod na velmi jednoduchý import z XLS souboru včetně atributů Připravte si, jaké parametry produktu budete importovat a ty vepište do jednotlivých sloupců. Soubor uložíme (v tomto případě jako import.xls)

Více

3. Je defenzivní programování technikou skrývání implementace? Vyberte jednu z nabízených možností: Pravda Nepravda

3. Je defenzivní programování technikou skrývání implementace? Vyberte jednu z nabízených možností: Pravda Nepravda 1. Lze vždy z tzv. instanční třídy vytvořit objekt? 2. Co je nejčastější příčinou vzniku chyb? A. Specifikace B. Testování C. Návrh D. Analýza E. Kódování 3. Je defenzivní programování technikou skrývání

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

Design Patterns. Tomáš Herceg Microsoft MVP (ASP.NET) www.dotnetcollege.cz

Design Patterns. Tomáš Herceg Microsoft MVP (ASP.NET) www.dotnetcollege.cz Design Patterns Tomáš Herceg Microsoft MVP (ASP.NET) www.dotnetcollege.cz Základní návrhové vzory Kategorie Creational Patterns starají se o vytváření instancí Structural Patterns struktura komponent v

Více

PB161 Programování v C++ Proudy pro standardní zařízení Souborové proudy Paměťové proudy Manipulátory

PB161 Programování v C++ Proudy pro standardní zařízení Souborové proudy Paměťové proudy Manipulátory PB161 Programování v C++ Proudy pro standardní zařízení Souborové proudy Paměťové proudy Manipulátory Výhody objektového řešení Nástroje pro IO operace jsou v C++ součástí knihoven Hierarchie objektových

Více