Abstraktní datové typy

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

Download "Abstraktní datové typy"

Transkript

1 Datové struktury a algoritmy Část 4 Abstraktní datové typy Petr Felkel

2 Data structures and algorithms Part 4 Abstract data types Petr Felkel

3 Abstraktní datové typy Zdůrazňují vnější chování datové struktury Input Control Output BLACK BOX Emphasize outer behavior of the data structure 3/ 82

4 Abstraktní datové typy Abstrahují od jak? Jak jsou data zobrazena v paměti Jak jsou prováděny operace Zdůrazňují co? Co s nimi operace s daty provádějí nezávisle na konkrétní implementaci 4/ 82

5 Abstract data types Abstract from: How? How is the data stored in memory? How are the operations executed? Emphasize: What? What do the operations do with the data (independent of any particular implementation)? 5/ 82

6 Example Queue (Fronta) Čelo Front 6/ 82

7 Queue (Fronta) FIFO = First-in, First-out Access to front Insert to back 7/ 82

8 Abstract Queue (Fronta) Operations: Variables: e element, Q queue init(), front( Q ), delfront( Q ), inslast( e, Q ) Axioms: 1. init() returns a queue 2. front( inslast( e, init() )) = e 3. delfront( inslast( e, init() ) ) = init() 4. front( inslast( e, inslast( f, Q ) )) = front( inslast( f, Q ) ) 5. delfront( inslast( e, inslast( f, Q ) )) = inslast( e, delfront( inslast( f, Q ) )) 8/ 82

9 Expression Abstract Queue (Fronta) is a way of construction of data object by means of a sequence of operations Ex: inslast(4, inslast(3, inslast(2, init() ))) represents a queue front(inslast(4, inslast(3, inslast(2, init() )))) represents its first element (head), 2 9/ 82

10 1. init() Abstract Queue (Fronta) Returns a queue Is informally empty Must not be formally defined 10 / 82

11 Abstract Queue (Fronta) 2. front( inslast( e, init() )) = e = is a rewrite operation axiom A=B means instead A, write B Ex: front( inslast( 99, init() )) means / 82

12 Abstract Queue (Fronta) 3. delfront( inslast( e, init() )) = init() Axioms allow reduction of expressions Ex. delfront( inslast( 6, init() )) means init() 12 / 82

13 Abstract Queue (Fronta) 4. front( inslast( e, inslast( f, Q ) )) = front( inslast( f, Q ) ) Ex: front( inslast( 11, inslast( 5, init() ))) means [according to axiom 4] front( inslast( 5, init() )) 5 means [ax. 2] 13 / 82

14 Abstract Queue (Fronta) 5. delfront( inslast( e, inslast( f, Q ) )) = inslast( e, delfront( inslast( f, Q ) )) Ex: delfront( inslast( 8, inslast( 6, init() ))) means [according to axiom 5] inslast( 8, delfront( inslast( 6, init() ))) means [ax. 3] inslast( 8, init() ) 14 / 82

15 Abstract Queue (Fronta) And what to do with: front( init() )? delfront( init() )? Behavior is in the queue undefined! Add error states 6. error_empty_queue(q) = Q error_empty_elem() = e 7. front( init() ) = error_empty_elem() Ignore 8. delfront( init() ) = init() 15 / 82

16 Abstract Queue (Fronta) complete init() returns a queue Variables: e element, Q queue front( init() ) = error_empty_elem() front( inslast( e, init() )) = e front( inslast( e, inslast( f, Q ) )) = front( inslast( f, Q ) ) delfront( init() ) = init() delfront( inslast( e, init() ) ) = init() delfront( inslast( e, inslast( f, Q ) )) = inslast( e, delfront( inslast( f, Q ) )) error_empty_queue(q) = Q 16 / 82

17 Abstract Queue - extensions empty( init() ) = true empty( inslast( e, Q )) = false Variables: e element, Q queue length( init() ) = 0 length( inslast( e, Q ) ) = succ( length( Q ) ) 17 / 82

18 Some theory 18 / 82

19 Abstraktní datový typ Abstraktní datový typ (ADT) je množina druhů a příslušných operací, které jsou přesně specifikovány. Je nezávislý na konkrétní implementaci. Abstract data type is a set of data sorts and associated operations that are precisely specified independent of any particular implementation. [PEB, nist.gov] 19 / 82

20 Abstraktní datový typ SYNTAXE signatura = deklarace druhů Jména oborů hodnot + deklarace operací Jména operací Druhy (a pořadí) argumentů operací Druh výsledku SÉMANTIKA = popis vlastností operací! axiomy 20 / 82

21 Abstract data type SYNTAX signature = declaration of sorts Names of scopes of values + declaration of operations Names of operations Sorts (and order of) arguments of operations Sort of the result SEMANTICS axioms = descritption of the operations properties! 21 / 82

22 Abstract Queue SIGNATURE init empty Queue Signature as a diagram Elem inslast Bool delfront front error_empty_queue 22 / 82

23 Abstract Queue SIGNATURE Signature in symbols init: -> Queue inslast(_,_): Elem,Queue -> Queue empty(_): Queue -> Bool front(_): Queue -> Elem delfront(_): Queue -> Queue 23 / 82

24 Why syntax not enough? Example: Interval {1, 2, 3, 4, 5,..., 11, 12} a) month_in_year b) natural_number_from_interval_1_až_12 BUT! Operation successor (12) a) 1 for month_in_year b) undefined for number_from_interval 24 / 82

25 Implementation From Abstract Data Type to Data Structure 25 / 82

26 Data structure Data structure = a realization of ADT 1. Choose data type B for implementation of A. [integer / interval 1..12] 2. Choose representation of objects of type A by means of objects of type B. [1..January, 2..February, ] 3. Code the operations on A by means of operations of B 26 / 82

27 Queue implementation In Array Linear Circular A D B or A D B = A D B last SIZE-1 first last SIZE-1 In Dynamic Memory front last A D B 27 / 82

28 Example SPECIFIC Queue Interface (Syntax): Class Queue { int _size; Coupled together with Elem elems[max_size]; public: Queue init(); Elem front(); Queue delfront(); Queue inslast( Elem elem ); bool empty(); } Implementation: = 28 / 82

29 Specific Queue x Abstract Queue Implementation bool empty() { return (_size == 0) }; or bool empty() { return (_front == null ) }; or bool empty() { return (_front == _last ) }; Axioms vars: Elem e; Queue q; eqns: empty( init ) = true empty( inslast( e, q )) = false 29 / 82

30 Specific Queue x Abstract Queue Implementation Axioms Elem front(){ if(_front == null ) error; else return ( _front->val ) }; or Elem front() { if(_frontidx == _lastidx ) error; else return( elems[_frontidx] ) }; front( init ) = error_empty_elem front( inslast( e, q )) = if( empty( q )) then e else front( q ) Or front( inslast( e, init() )) = e front( inslast( e, inslast( f, Q ) )) = front( inslast( f, Q ) ) Details later on 30 / 82

31 Queue in an Array Elem queue ::front(void) { if( last == 0 ) return error_empty_elem(); else return array[front]; } void queue::delfront(void) { if( last!= 0) { //!empty() { last--; for(int i=0; i<last; i++) array[i] = array[i+1]; } } 31 / 82

32 Queue in Dynamic Mem. Elem queue ::front(void) { if( last!= null ) return error_empty_elem(); else return front->val; } void queue::delfront(void) { if( first!= null) { //!empty() Item *delitem = first; first = first.next; delete delitem; last } } front A delitem D B E 32 / 82

33 Queue in Dynamic Mem. void queue::inslast( elem e ) { Item *newitem = new Item; newitem->val = e; newitem->next = null; last.next = newitem; last = newitem; } front last A D newitem B E bool queue ::empty(void) // empty(): Queue -> Bool { if( last == NULL ) return true; else return false; } 33 / 82

34 Fronta Shrnutí úlohy hromadné obsluhy FIFO = First-in, First-out kdo dřív přijde, ten dřív mele přístup pouze k prvnímu prvku (front) vkládání pouze na konec (back) homogenní, lineární, dynamická 34 / 82

35 Queue - Summary multi-user services FIFO = First-in, First-out only first element accessible (front) insert only at and (back) homogeneous, linear, dynamic 35 / 82

36 (Abstraktní) datové typy Počet a vzájemné uspořádání složek statické = nemění se dynamické = mění se Typ komponent homogenní = všechny stejného typu nehomogenní = různého typu Existuje bezprostřední následník lineární = existuje [např. pole, seznam, ] nelineární = neexistuje [strom, tabulka, ] 36 / 82

37 (Abstract) data types Number and arrangement of elements static = fixed, does not change dynamic = changes Type of the components homogeneous = all of equal type inhomogeneous = different types Direct successor existence linear = direct successor exists nonlinear = direct successor does not exist 37 / 82

38 Abstraktní datové typy Fronta (Queue) Zásobník (Stack) Pole (Array) Tabulka (Table) Seznam (List) Strom (Tree) Množina (Set) 38 / 82

39 Zásobník (Stack) Kdy? odložení informace, výběr v opačném pořadí (návrat z procedury, uzlové body cesty, náboje v pistoli,...) LIFO = Last-in, First-out poslední tam, první ven přístup pouze k prvku na vrcholu (top) vkládání pouze na vrchol (top) homogenní, lineární, dynamický 39 / 82

40 Stack (Zásobník) When? temporary data storage, access in reverse order (return from the procedure call), important nodes along the path, ammunition in pistol,...) LIFO = Last-in, First-out only top element accessible (top) insert on the top only homogeneous, linear, dynamic 40 / 82

41 Stack (Zásobník) init empty full Stack length Nat Elem push max Bool pop top 41 / 82

42 Stack (Zásobník) Operations: init: -> Stack empty(_): Stack -> Bool push(_,_): Elem, Stack -> Stack top(_): Stack -> Elem pop(_): Stack -> Stack length(_): Stack -> Nat max: -> Nat full(_): Stack -> Bool...omezen 42 / 82

43 Stack (Zásobník) empty( init ) = true empty( push( e, s )) = false top( init ) = error_elem top( push( e, s )) = e pop( init ) = init pop( push( e, s )) = s 43 / 82

44 Stack (Zásobník) 1. empty( init() ) = true 2. empty( push( e, s )) = false Ex: empty( push( X, push( Y, pop( push( A, init() ))))) -> false empty( pop( push( A, init() ))) ->??? Need for more axioms! 44 / 82

45 Stack (Zásobník) 3. top( init() ) = error_elem() 4. top( push( e, s )) = e Ex: top( push( X, push( Y, pop( push( A, init() ))))) -> X top( init() ) -> error_elem top( pop( push( A, init() ))) ->??? Need for more axioms! 45 / 82

46 Stack (Zásobník) 5. pop( init ) = init() 6. pop( push( e, s )) = s Ex: pop( push( A, init() )) -> init() pop( push( X, push( Y, pop( push( A, init() ))))) -> push( Y, pop( push( A, init() ))) -> push( Y, init() ) 46 / 82

47 Stack (Zásobník) ext. 7. length( init ) = 0 8. length( push( e, s )) = succ( length( s )) Ex: length( push( A, init() )) -> succ( length( init() )) -> succ( 0 ) -> 1 47 / 82

48 Stack (Zásobník) limit. 9. full( s ) = eq( length( s ), max ) 10. push( e, s ) = if full( s ) then error_stack 48 / 82

49 In Array Stack - implementation vals A D B E last SIZE-1 In Dynamic Memory tos E B D A 49 / 82

50 Stack in Array class stack { private: elem vals[size]; int last; // array of elements // index behind (place for next item) public: void init( void ); elem top( void ); void pop( void ); void push( elem e ); void error( const char errortext[] ); }; stack(void); ~stack(void); // just calls init() 50 / 82

51 void stack::init(void) { last = 0; } Stack in Array // init: -> Stack elem stack::top(void){ // top(_): Stack -> Elem if( last > 0 ) return vals[last-1]; else error("stack is empty during top()"); return 0; } void stack::pop(void){ // pop(_): Stack -> Stack if( last > 0 ) last--; else error("stack is empty during pop()"); } 51 / 82

52 void stack::push( elem e ) { if( last < SIZE ) vals[ last ++ ] = e; } Stack in Array //push(_,_):elem, Stack -> Stack bool stack::empty(void)// empty(_): Stack -> Bool { if( last == 0 ) return true; else return false; } 52 / 82

53 #include "stack.h" //#include "stackdyn.h" Stack Usage void main( void ) { stack s; // OUTPUT: cout << s.empty() << endl; // 1 s.push( 2 ); s.push( 3 ); cout << s.empty() << endl; // 0 cout << s.top() << endl; // 3 s.pop(); cout << s.top() << endl; // 2 s.pop(); cout << s.top() << endl; // Stack is empty during top cout << s.empty() << endl; // 1 } 53 / 82

54 Stack in Dynamic Mem. class stack { private: Item * s; // head of the list of elements public: void init( void ); elem top( void ); void pop( void ); void push( elem e ); void error( const char errortext[] ); }; stack(void); ~stack(void); // just calls init() 54 / 82

55 Stack in Dynamic Mem. void stack::init(void) { s = NULL; } // init: -> Stack elem stack::top(void){ // top(_): Stack -> Elem if( s!= NULL ) return s->val; else error( "Stack is empty during top()" ); return 0; } void stack::pop(void){ // pop(_): Stack -> Stack if( s!= NULL ) { Item* tmp = s; s = s->next; delete( tmp ); } else error( "Stack is empty during pop()" ); } 55 / 82

56 Abstraktní datové typy Fronta (Queue) Zásobník (Stack) Pole (Array) Tabulka (Table) Seznam (List) Strom (Tree) Množina (Set) 56 / 82

57 Pole (array) j i 6 A B C 7 D E F Array A of 2x3 elements Row index i {6,7} Column index j {1, 2, 3} A[6,3] -> C 57 / 82

58 Pole (array) 6 A B C D E F Kdy? prvky stejného typu - homogenní všechny prvky současně v paměti rychlý náhodný přístup (random-access) známý počet prvků - statické indexy uspořádány - lineární ---- dán počet dimenzí (n) a meze indexů přístup k prvkům - mapovací funkce A[6,3] -> C 58 / 82

59 When? Array (pole) all elements equal - homogeneous all elements in memory fast random access fixed number of elements - static indexes ordered - linear ---- given: number of dimensions (n) and index range access to elements - map function 6 A B C D E F 59 / 82 3 A[6,3] -> C

60 init Pole (array) Array Elem A B C 7 D E F Idx lower upper set get 60 / 82

61 Pole (array) Operations init(_,_): Idx, Idx -> array upper(_): Array -> Idx lower(_): Array -> Idx set(_,_,_): Array,Idx,Elem->Array get(_,_): Array, Idx -> Elem 1-D (one dimensional) n-d -> Elem ~ (n-1)d Array 6 A B C D E F 61 / 82

62 Pole (array) lower( init(m,n) ) = m lower( set(a,i,e) ) = lower( a ) upper( init(m,n) ) = n upper( set(a,i,e) ) = upper( a ) set( a, i, e ) = if( or( lt(i,lower(a)), lt(upper(a),i) )) then error_array else set( a, i, e ) A B C 7 D E F 62 / 82

63 Pole (array) A B C 7 D E F get( init(m,n), i ) = error_elem get( set( a, i 1, e ), i 2 ) = = if( eq(i 1, i 2 )) then e else get( a, i 2 ) Praxe: array[i] = e zápis set(array,i,e) e = array[i] zápis e = get(array,i) 63 / 82

64 Array (Pole) mapping function Logical structure Array a[6..7, 1..3] Ex: a[7,2]->e Physical location in memory Row order (po řádcích) A B C D E F Relative address (offset) A B C i 7 D E F Indices Column order (po sloupcích) A D B E C F j row 6 row 7 col 1 col 2 col 3 Base address map(7,2) -> (base + 4) map(7,2) -> (base + 3) 64 / 82

65 Array (Pole) mapping function A B C D E F map(i,j) = a(i min, j min ) + (i-i min ) n j + (j-j min ) Base address row order (po řádcích) 2D Column offset Row offset map(i,j) = a(0,0) + (i*n j + j) for indices from (0,0) Ex: map(7,2) = a(6,1) + (i-6)*3 + (j-1) map(7,2) = a(6,1) + (7-6)*3 + (2-1) = a(6,1) + 4 row length = Number of columns Relative address i A B C 7 3 D E F A B C D E F j 65 / 82

66 Array (Pole) mapping function A B C D E F map(i,j,k) = a(i min, j min, k min ) + (i-i min ) n j n k + + (j-j min ) n k + + (k-k min ) Base address map(i,j,k) = a(0,0,0) + (i*n j + j) * n k + k for indices from (0,0) row order (po řádcích) 3D Relative address (element offset) 66 / 82

67 Array (Pole) mapping function A D B E C F map(i,j) = a(i min, j min ) + (i-i min ) + column order (po sloupcích) 2D Base address + (j-j min ) n i Relative address map(i,j) = a(0,0) + j * n i + i for indices from (0,0) Ex: map(7,2) = a(6,1) + (7-6) + (2-1) * 2 = a(6,1) / 82

68 Array (Pole) mapping function A D B E C F column order (po sloupcích) 3D map(i,j,k) = a(i min, j min, k min ) + (i-i min ) + + (j-j min ) n i + Base address + (k-k min ) n i n j Relative address map(i,j,k) = a(0,0,0) + (k*n j + j) * n i + i for indices from (0,0) 68 / 82

69 Array speedup by Iliff s vectors Mapping functions need multiplications -> change them to additions (0) (1) (2) 3 4 A: array [3..4, 1..3, 0..2] i (0) j j (0) k A B C E F G H I J K L M N O P Q R S [Hudec93, PT] 69 / 82

70 Abstraktní datové typy Fronta (Queue) Zásobník (Stack) Pole (Array) Tabulka (Table) Seznam (List) Strom (Tree) Množina (Set) 70 / 82

71 Vyhledávací Tabulka (Look-up Table) Kartotéka, asociativní paměť, převod mezi kódy, četnost slov,... homogenní, dynamická (nejen) Obsahuje a nelineární položky jednoznačně identifikované klíčem (podle klíče se položky vyhledávají) klíč jen 1x (je jedinečný) Př.: seznam hospod, klíčem je jejich jméno. 71 / 82

72 Look-up Table (Vyhledávací Tabulka) Card-register, associative memory, code conversion, word count homogeneous, dynamic (not only), Contains and nonlinear items items fully qualified by the key (item are searched according to their key) key is unique Ex.: directory of bars, the bar name is its key. 72 / 82

73 Tabulka (Look-up Table) delete read Key Table search Bool init Elem insert 73 / 82

74 Tabulka (Look-up Table) Operace: init: -> Table insert(_,_,_): Key, Elem, Table -> Table read(_,_): Key, Table -> Elem delete(_,_): Key, Table -> Table search(_,_): Key, Table -> Bool 74 / 82

75 Tabulka (Look-up Table) search( k, init ) = false search( k 1, insert(k 2,e,t)) = if( eq(k 1, k 2 ) ) then true else search( k 1, t ) 75 / 82

76 Tabulka (Look-up Table) delete( k, init ) = init delete( k 1, insert(k 2,e,t)) = if( eq(k 1, k 2 ) ) then delete( k 1, t ) else insert(k 2,e,delete(k 1, t)) 76 / 82

77 Tabulka (Look-up Table) read( k, init ) = error_elem read( k 1, insert(k 2,e,t)) = if( eq(k 1, k 2 ) ) then e else read( k 1, t ) 77 / 82

78 Tabulka (Look-up Table) insert(k 1,e 1, insert(k 2,e 2,t)) = if( eq(k 1, k 2 ) ) then insert(k 1,e 1, t) else insert(k 2,e 2, insert(k 1,e 1, t)) 78 / 82

79 Look-up Table Implementation In Array For small interval of keys sequential search O(n) direct access (key = index) O(1) converttolatin2( char_kamenický) LUT[char_kamenický] For large universum of keys Hash tables average O(1) to O(n) Wait for a separate lecture 79 / 82

80 Abstraktní datové typy Fronta (Queue) Zásobník (Stack) Pole (Array) Tabulka (Table) Seznam (List) Strom (Tree) Množina (Set) 80 / 82

81 Prameny / References Jan Honzík: Programovací techniky, skripta, VUT Brno, 19xx Karel Richta: Datové struktury, skripta pro postgraduální studium, ČVUT Praha, 1990 Bohuslav Hudec: Programovací techniky, skripta, ČVUT Praha, / 82

82 Prameny / References Steven Skiena: The Algorithm Design Manual, Springer-Verlag New York, Gang of four (Cormen, Leiserson, Rivest, Stein): Introduction to Algorithms, MIT Press, 1990 Code exapmples: M.A.Weiss: Data Structures and Problem Solving using JAVA, Addison Wesley, 2001, code web page: ode/code.html 82 / 82

Abstraktní datové typy

Abstraktní datové typy Datové struktury a algoritmy Abstraktní datové typy Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta a kol., 2013 Datové struktury a algoritmy,

Více

Abstraktní datové typy

Abstraktní datové typy Karel Müller, Josef Vogel (ČVUT FIT) Abstraktní datové typy BI-PA2, 2011, Přednáška 10 1/27 Abstraktní datové typy Ing. Josef Vogel, CSc Katedra softwarového inženýrství Katedra teoretické informatiky,

Více

Datové struktury. Obsah přednášky: Definice pojmů. Abstraktní datové typy a jejich implementace. Algoritmizace (Y36ALG), Šumperk - 12.

Datové struktury. Obsah přednášky: Definice pojmů. Abstraktní datové typy a jejich implementace. Algoritmizace (Y36ALG), Šumperk - 12. Obsah přednášky: Definice pojmů o datový typ, o abstraktní datový typ Datové struktury Abstraktní datové typy a jejich implementace o Fronta (Queue) o Zásobník (Stack) o Množina (Set) Algoritmizace (Y36ALG),

Více

Dynamic programming. Optimal binary search tree

Dynamic programming. Optimal binary search tree The complexity of different algorithms varies: O(n), Ω(n ), Θ(n log (n)), Dynamic programming Optimal binary search tree Různé algoritmy mají různou složitost: O(n), Ω(n ), Θ(n log (n)), The complexity

Více

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007 Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků

Více

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

HASHING GENERAL Hashovací (=rozptylovací) funkce

HASHING GENERAL Hashovací (=rozptylovací) funkce Níže uvedené úlohy představují přehled otázek, které se vyskytly v tomto nebo v minulých semestrech ve cvičení nebo v minulých semestrech u zkoušky. Mezi otázkami semestrovými a zkouškovými není žádný

Více

Šablony, kontejnery a iterátory

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

Více

ADT/ADS = abstraktní datové typy / struktury

ADT/ADS = abstraktní datové typy / struktury DT = datové typy obor hodnot, které může proměnná nabývat, s operacemi na tomto oboru určen: obor hodnot + výpočetní operace např. INT = { 2 147 483 648 až +2 147 483 647} + {+,,*,/,} ADT/ADS = abstraktní

Více

Datové struktury 1: Základní datové struktury

Datové struktury 1: Základní datové struktury Datové struktury 1: Základní datové struktury prof. Ing. Pavel Tvrdík CSc. Katedra počítačových systémů Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010 Efektivní

Více

Šablony, kontejnery a iterátory

Šablony, kontejnery a iterátory 11. března 2015, Brno Připravil: David Procházka Šablony, kontejnery a iterátory Programovací jazyk C++ Šablony Strana 2 / 31 Obsah přednášky 1 Šablony 2 Abstraktní datové struktury 3 Iterátory 4 Array

Více

Čipové karty Lekařská informatika

Čipové karty Lekařská informatika Čipové karty Lekařská informatika Následující kód je jednoduchou aplikací pro čipové karty, která po překladu vytváří prostor na kartě, nad kterým jsou prováděny jednotlivé operace a do kterého jsou ukládány

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

ALGORITMIZACE 2010/03 STROMY, BINÁRNÍ STROMY VZTAH STROMŮ A REKURZE ZÁSOBNÍK IMPLEMENTUJE REKURZI PROHLEDÁVÁNÍ S NÁVRATEM (BACKTRACK)

ALGORITMIZACE 2010/03 STROMY, BINÁRNÍ STROMY VZTAH STROMŮ A REKURZE ZÁSOBNÍK IMPLEMENTUJE REKURZI PROHLEDÁVÁNÍ S NÁVRATEM (BACKTRACK) ALGORITMIZACE 2010/03 STROMY, BINÁRNÍ STROMY VZTAH STROMŮ A REKURZE ZÁSOBNÍK IMPLEMENTUJE REKURZI PROHLEDÁVÁNÍ S NÁVRATEM (BACKTRACK) Strom / tree uzel, vrchol / node, vertex hrana / edge vnitřní uzel

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

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

Stromy. Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta a kol.

Stromy. Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta a kol. Stromy Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta a kol., 2018, B6B36DSA 01/2018, Lekce 9 https://cw.fel.cvut.cz/wiki/courses/b6b36dsa/start

Více

Algoritmizace prostorových úloh

Algoritmizace prostorových úloh INOVACE BAKALÁŘSKÝCH A MAGISTERSKÝCH STUDIJNÍCH OBORŮ NA HORNICKO-GEOLOGICKÉ FAKULTĚ VYSOKÉ ŠKOLY BÁŇSKÉ - TECHNICKÉ UNIVERZITY OSTRAVA Algoritmizace prostorových úloh Datové struktury Daniela Szturcová

Více

2011 Jan Janoušek BI-PJP. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

2011 Jan Janoušek BI-PJP. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti PROGRAMOVACÍ JAZYKY A PŘEKLADAČE TRANSFORMACE GRAMATIK NA LL(1) GRAMATIKU. TABULKA SYMBOLŮ. VNITŘNÍ REPREZENTACE: AST. JAZYK ZÁSOBNÍKOVÉHO POČÍTAČE. RUNTIME PROSTŘEDÍ. 2011 Jan Janoušek BI-PJP Evropský

Více

Algoritmizace prostorových úloh

Algoritmizace prostorových úloh INOVACE BAKALÁŘSKÝCH A MAGISTERSKÝCH STUDIJNÍCH OBORŮ NA HORNICKO-GEOLOGICKÉ FAKULTĚ VYSOKÉ ŠKOLY BÁŇSKÉ - TECHNICKÉ UNIVERZITY OSTRAVA Algoritmizace prostorových úloh Datové struktury Daniela Szturcová

Více

Abstraktní datové typy II.

Abstraktní datové typy II. Datové struktury a algoritmy Abstraktní datové typy II. Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta a kol., 2012 Datové struktury a algoritmy,

Více

Vyhledávání, zejména rozptylování

Vyhledávání, zejména rozptylování Datové struktury a algoritmy Část 11 Vyhledávání, zejména rozptylování Petr Felkel 16.5.2016 Topics Vyhledávání Rozptylování (hashing) Rozptylovací funkce Řešení kolizí Zřetězené rozptylování Otevřené

Více

Základní pojmy. Úvod do programování. Základní pojmy. Zápis algoritmu. Výraz. Základní pojmy

Základní pojmy. Úvod do programování. Základní pojmy. Zápis algoritmu. Výraz. Základní pojmy Úvod do programování Michal Krátký 1,Jiří Dvorský 1 1 Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programování, 2004/2005 Procesor Procesorem je objekt, který vykonává algoritmem popisovanou

Více

Konstruktory a destruktory

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

Více

Informační systémy 2008/2009. Radim Farana. Obsah. Dotazy přes více tabulek

Informační systémy 2008/2009. Radim Farana. Obsah. Dotazy přes více tabulek 5 Vysoká škola báňská Technická univerzita Ostrava Fakulta strojní, Katedra automatizační techniky a řízení 2008/2009 Radim Farana 1 Obsah Jazyk SQL, Spojení tabulek, agregační dotazy, jednoduché a složené

Více

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

Programování v C++ 2, 8. cvičení Programování v C++ 2, 8. cvičení návrhový vzor iterátor 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled 1 2 Shrnutí minule procvičené látky

Více

x86 assembler and inline assembler in GCC

x86 assembler and inline assembler in GCC x86 assembler and inline assembler in GCC Michal Sojka sojkam1@fel.cvut.cz ČVUT, FEL License: CC-BY-SA 4.0 Useful instructions mov moves data between registers and memory mov $1,%eax # move 1 to register

Více

WORKSHEET 1: LINEAR EQUATION 1

WORKSHEET 1: LINEAR EQUATION 1 WORKSHEET 1: LINEAR EQUATION 1 1. Write down the arithmetical problem according the dictation: 2. Translate the English words, you can use a dictionary: equations to solve solve inverse operation variable

Více

Compression of a Dictionary

Compression of a Dictionary Compression of a Dictionary Jan Lánský, Michal Žemlička zizelevak@matfyz.cz michal.zemlicka@mff.cuni.cz Dept. of Software Engineering Faculty of Mathematics and Physics Charles University Synopsis Introduction

Více

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

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

Více

PG 9.5 novinky ve vývoji aplikací

PG 9.5 novinky ve vývoji aplikací PG 9.5 novinky ve vývoji aplikací P2D2 2016 Antonín Houska 18. února 2016 Část I GROUPING SETS, ROLLUP, CUBE Agregace Seskupení řádků tabulky (joinu) do podmnožin podle určitého kĺıče. Za každou podmnožinu

Více

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

Programování v C++ 2, 4. cvičení Programování v C++ 2, 4. cvičení statické atributy a metody, konstruktory 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled Přístupová práva

Více

Spojový seznam. Jan Kybic.

Spojový seznam. Jan Kybic. Spojový seznam Jan Kybic http://cmp.felk.cvut.cz/~kybic kybic@fel.cvut.cz 2016 2017 1 / 25 Složitost operací u lineárních datových struktur v Pythonu operace zásob. fronta pole pole řetězce přidej na začátek

Více

Abstraktní datový typ

Abstraktní datový typ Abstraktní datový typ Jan Faigl Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 11 B0B36PRP Procedurální programování Jan Faigl, 2017 B0B36PRP Přednáška 11: Abstraktní

Více

Fronta (Queue) Úvod do programování. Fronta implementace. Fronta implementace pomocí pole 1/4. Fronta implementace pomocí pole 3/4

Fronta (Queue) Úvod do programování. Fronta implementace. Fronta implementace pomocí pole 1/4. Fronta implementace pomocí pole 3/4 Fronta (Queue) Úvod do programování Michal Krátký 1,Jiří Dvorský 1 1 Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programování, 2004/2005 Fronta uplatňuje mechanismus přístupu FIFO first

Více

Semestrální práce z předmětu. Jan Bařtipán / A03043 bartipan@studentes.zcu.cz

Semestrální práce z předmětu. Jan Bařtipán / A03043 bartipan@studentes.zcu.cz Semestrální práce z předmětu KIV/UPA Jan Bařtipán / A03043 bartipan@studentes.zcu.cz Zadání Program přečte ze vstupu dvě čísla v hexadecimálním tvaru a vypíše jejich součet (opět v hexadecimální tvaru).

Více

ALGORITMIZACE 2010/03 STROMY, BINÁRNÍ STROMY VZTAH STROMŮ A REKURZE ZÁSOBNÍK IMPLEMENTUJE REKURZI PROHLEDÁVÁNÍ S NÁVRATEM (BACKTRACK)

ALGORITMIZACE 2010/03 STROMY, BINÁRNÍ STROMY VZTAH STROMŮ A REKURZE ZÁSOBNÍK IMPLEMENTUJE REKURZI PROHLEDÁVÁNÍ S NÁVRATEM (BACKTRACK) ALGORITMIZACE 2010/03 STROMY, BINÁRNÍ STROMY VZTAH STROMŮ A REKURZE ZÁSOBNÍK IMPLEMENTUJE REKURZI PROHLEDÁVÁNÍ S NÁVRATEM (BACKTRACK) Strom / tree uzel, vrchol / node, vertex hrana / edge vnitřní uzel

Více

Gymnázium, Brno, Slovanské nám. 7, SCHEME OF WORK Mathematics SCHEME OF WORK. cz

Gymnázium, Brno, Slovanské nám. 7, SCHEME OF WORK Mathematics SCHEME OF WORK.  cz SCHEME OF WORK Subject: Mathematics Year: first grade, 1.X School year:../ List of topisc # Topics Time period Introduction, repetition September 1. Number sets October 2. Rigtht-angled triangle October,

Více

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

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

Více

Dynamické datové struktury I.

Dynamické datové struktury I. Dynamické datové struktury I. Seznam. Fronta. Zásobník. Tomáš Bayer bayertom@natur.cuni.cz Katedra aplikované geoinformatiky a kartografie, Přírodovědecká fakulta UK. Tomáš Bayer bayertom@natur.cuni.cz

Více

Seznamy a iterátory. Kolekce obecně. Rozhraní kolekce. Procházení kolekcí

Seznamy a iterátory. Kolekce obecně. Rozhraní kolekce. Procházení kolekcí Kolekce obecně Seznamy a iterátory 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 Kolekce ::= homogenní sada prvků

Více

Angličtina v matematických softwarech 2 Vypracovala: Mgr. Bronislava Kreuzingerová

Angličtina v matematických softwarech 2 Vypracovala: Mgr. Bronislava Kreuzingerová Angličtina v matematických softwarech 2 Vypracovala: Mgr. Bronislava Kreuzingerová Název školy Název a číslo projektu Název modulu Obchodní akademie a Střední odborné učiliště, Veselí nad Moravou Motivace

Více

2 Axiomatic Definition of Object 2. 3 UML Unified Modelling Language Classes in UML Tools for System Design in UML 5

2 Axiomatic Definition of Object 2. 3 UML Unified Modelling Language Classes in UML Tools for System Design in UML 5 Contents Contents 1 Semestrální práce 1 2 Axiomatic Definition of Object 2 3 UML Unified Modelling Language 2 3.1 Classes in UML............................ 3 4 Tools for System Design in UML 5 5 Student

Více

HASHING GENERAL Hashovací (=rozptylovací) funkce

HASHING GENERAL Hashovací (=rozptylovací) funkce Níže uvedené úlohy představují přehled otázek, které se vyskytly v tomto nebo v minulých semestrech ve cvičení nebo v minulých semestrech u zkoušky. Mezi otázkami semestrovými a zkouškovými není žádný

Více

Definice uživatelského typu. Uživatelem definované typy. Součinové datové typy. Součtové datové typy. FLP - Uživatelem definované typy

Definice uživatelského typu. Uživatelem definované typy. Součinové datové typy. Součtové datové typy. FLP - Uživatelem definované typy Uživatelem definované typy Ing. Lumír Návrat katedra informatiky, A 1018 59 732 3252 Definice uživatelského typu data Color = Red Green Blue Color typový konstruktor Red / Green / Blue datové konstruktory

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

GUIDELINES FOR CONNECTION TO FTP SERVER TO TRANSFER PRINTING DATA

GUIDELINES FOR CONNECTION TO FTP SERVER TO TRANSFER PRINTING DATA GUIDELINES FOR CONNECTION TO FTP SERVER TO TRANSFER PRINTING DATA What is an FTP client and how to use it? FTP (File transport protocol) - A protocol used to transfer your printing data files to the MAFRAPRINT

Více

Dynamické struktury a Abstraktní Datový Typy (ADT)

Dynamické struktury a Abstraktní Datový Typy (ADT) Dynamické struktury a Abstraktní Datový Typy (ADT) Jan Faigl Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 11 A0B36PR1 Programování 1 Jan Faigl, 2015 A0B36PR1

Více

Abstraktní datový typ

Abstraktní datový typ Abstraktní datový typ Jan Faigl Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 11 B0B36PRP Procedurální programování Jan Faigl, 2018 B0B36PRP Přednáška 11: Abstraktní

Více

Část I. Část 1 Abstraktní datový typ. Přehled témat. Abstraktní datový typ. Zdroje

Část I. Část 1 Abstraktní datový typ. Přehled témat. Abstraktní datový typ. Zdroje Přehled témat Abstraktní datový typ Jan Faigl Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 11 B0B36PRP Procedurální programování Část 1 Abstraktní datový typ

Více

Část 1 Spojové struktury (stromy) Dynamické struktury a Abstraktní Datový Typy (ADT) Část 2 Abstraktní datový typ. Část 3 Příklad ADT Prioritní fronta

Část 1 Spojové struktury (stromy) Dynamické struktury a Abstraktní Datový Typy (ADT) Část 2 Abstraktní datový typ. Část 3 Příklad ADT Prioritní fronta Část 1 Spojové struktury (stromy) Dynamické struktury a Abstraktní Datový Typy (ADT) Stromy Jan Faigl Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 11 A0B36PR1

Více

Database systems. Normal forms

Database systems. Normal forms Database systems Normal forms An example of a bad model SSN Surnam OfficeNo City Street No ZIP Region President_of_ Region 1001 Novák 238 Liteň Hlavní 10 26727 Středočeský Rath 1001 Novák 238 Bystřice

Více

Tabulka symbolů. Vazba (binding) Vazba - příklad. Deklarace a definice. Miroslav Beneš Dušan Kolář

Tabulka symbolů. Vazba (binding) Vazba - příklad. Deklarace a definice. Miroslav Beneš Dušan Kolář Vazba (binding) Tabulka symbolů Miroslav Beneš Dušan Kolář vazba = spojení mezi entitou a vlastností okamžik vazby (binding time) při návrhu jazyka při implementaci jazyka během překladu/spojování/zavádění

Více

Úvod do programovacích jazyků (Java)

Úvod do programovacích jazyků (Java) Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2007/2008 c 2006 2008 Michal Krátký Úvod do programovacích

Více

Část 1 Abstraktní datový typ. Datové struktury a abstraktní datový typ

Část 1 Abstraktní datový typ. Datové struktury a abstraktní datový typ Přehled témat Jan Faigl Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 11 B0B36PRP Procedurální programování Část 1 Datové struktury Zásobník Fronta spojovým seznamem

Více

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV) Příprava studijního programu Informatika je podporována projektem financovaným z Evropského sociálního fondu a rozpočtu hlavního města Prahy. Praha & EU: Investujeme do vaší budoucnosti Enterprise Java

Více

1 2 3 4 5 6 součet cvičení celkem. známka. Úloha č.: max. bodů: skut. bodů:

1 2 3 4 5 6 součet cvičení celkem. známka. Úloha č.: max. bodů: skut. bodů: Úloha č.: max. bodů: skut. bodů: 1 2 3 4 5 6 součet cvičení celkem 20 12 20 20 14 14 100 známka UPOZORNĚNÍ : a) Písemná zkouška obsahuje 6 úloh, jejichž řešení musí být vepsáno do připraveného formuláře.

Více

Vytvoření pokročilé Fotogalerie v Drupalu - Views

Vytvoření pokročilé Fotogalerie v Drupalu - Views Vytvoření pokročilé Fotogalerie v Drupalu - Views Views Máme tři pohledy: gallery_photos, all_galeries, admin_gallery Buď je můžete vytvořit podle návodu níže, nebo importovat z přiložených txt souborů

Více

prohled av an ı graf u Karel Hor ak, Petr Ryˇsav y 16. bˇrezna 2016 Katedra poˇ c ıtaˇ c u, FEL, ˇ CVUT

prohled av an ı graf u Karel Hor ak, Petr Ryˇsav y 16. bˇrezna 2016 Katedra poˇ c ıtaˇ c u, FEL, ˇ CVUT prohledávání grafů Karel Horák, Petr Ryšavý 16. března 2016 Katedra počítačů, FEL, ČVUT Příklad 1 Nad frontou (queue) byly provedeny následující operace: push(1) push(2) print(poll()) print(peek()) print(peek())

Více

Introduction to MS Dynamics NAV

Introduction to MS Dynamics NAV Introduction to MS Dynamics NAV (Item Charges) Ing.J.Skorkovský,CSc. MASARYK UNIVERSITY BRNO, Czech Republic Faculty of economics and business administration Department of corporate economy Item Charges

Více

Část I Spojové struktury

Část I Spojové struktury Část 1 Spojové struktury (seznamy) Spojové struktury Jan Faigl Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 10 A0B36PR1 Programování 1 Spojové struktury Spojový

Více

Lineární datové struktury

Lineární datové struktury Lineární datové struktury doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 5. března 2019 Jiří Dvorský (VŠB TUO) Lineární datové

Více

PB161 6. přednáška (26. října 2015)

PB161 6. přednáška (26. října 2015) PB161 6. přednáška (26. října 2015) Standardní knihovna C++ obsahuje řadu částí, některé už jsme viděli (strings, I/O streams) mimo jiné obsahuje i knihovní funkce ze standardní knihovny jazyka C jiné

Více

Jazyk C++ I. Šablony 3

Jazyk C++ I. Šablony 3 Jazyk C++ I Šablony 3 AR 2013/2014 Jazyk C++ I Třídy template class TVektor { T *a; int n; static int PocInstanci; public: TVektor(int _n = 0) : n(_n) { a = new T[n]; PocInstanci++; } ~TVektor()

Více

ABSTRAKTNÍ DATOVÉ TYPY (ADT)

ABSTRAKTNÍ DATOVÉ TYPY (ADT) ABSTRAKTNÍ DATOVÉ TYPY (ADT) hierarchie abstrakcí: nejvyšší úroveň ZOO DruhZvirat celá čísla, řetězce nejnižší úroveň bity Abstrahujeme od - reprezentace (implementace) dat - realizace (implementace) operací

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

IRAE 07/08 Přednáška č. 7. Začátek (head)

IRAE 07/08 Přednáška č. 7. Začátek (head) Fronta (Queue) FIFO First In First Out (první dovnitř první ven) Vložení položky (Enqueue) Vyjmutí položky (Dequeue) Přidávání prvků Konec (Tail) Začátek (head) na jedné straně (konec) Odebírání prvků

Více

Lineární datové struktury

Lineární datové struktury Lineární datové struktury 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) Lineární datové

Více

Chapter 7: Process Synchronization

Chapter 7: Process Synchronization Chapter 7: Process Synchronization Background The Critical-Section Problem Synchronization Hardware Semaphores Classical Problems of Synchronization Critical Regions Monitors Synchronization in Solaris

Více

Tento materiál byl vytvořen v rámci projektu Operačního programu Vzdělávání pro konkurenceschopnost.

Tento materiál byl vytvořen v rámci projektu Operačního programu Vzdělávání pro konkurenceschopnost. Tento materiál byl vytvořen v rámci projektu Operačního programu Vzdělávání pro konkurenceschopnost. Projekt MŠMT ČR Číslo projektu Název projektu školy Klíčová aktivita III/2 EU PENÍZE ŠKOLÁM CZ.1.07/1.4.00/21.2146

Více

Cvičení 9 - Monitory. monitor m; var proměnné... procedure p; begin... end; begin inicializace; end;

Cvičení 9 - Monitory. monitor m; var proměnné... procedure p; begin... end; begin inicializace; end; Cvičení 9 - Monitory na rozdíl od semaforů je monitor jazyková konstrukce monitor = Pascalský blok podobný proceduře nebo fci uvnitř monitoru jsou definovány proměnné, procedury a fce proměnné monitoru

Více

MIKROPROCESORY PRO VÝKONOVÉ SYSTÉMY. Stručný úvod do programování v jazyce C 2.díl. České vysoké učení technické Fakulta elektrotechnická

MIKROPROCESORY PRO VÝKONOVÉ SYSTÉMY. Stručný úvod do programování v jazyce C 2.díl. České vysoké učení technické Fakulta elektrotechnická MIKROPROCESORY PRO VÝKONOVÉ SYSTÉMY Stručný úvod do programování v jazyce C 2.díl České vysoké učení technické Fakulta elektrotechnická A1B14MIS Mikroprocesory pro výkonové systémy 07 Ver.1.10 J. Zděnek,

Více

PL/SQL. Jazyk SQL je jazykem deklarativním, který neobsahuje procedurální příkazy jako jsou cykly, podmínky, procedury, funkce, atd.

PL/SQL. Jazyk SQL je jazykem deklarativním, který neobsahuje procedurální příkazy jako jsou cykly, podmínky, procedury, funkce, atd. PL/SQL Jazyk SQL je jazykem deklarativním, který neobsahuje procedurální příkazy jako jsou cykly, podmínky, procedury, funkce, atd. Rozšířením jazyka SQL o proceduralitu od společnosti ORACLE je jazyk

Více

ALG 09. Radix sort (přihrádkové řazení) Counting sort. Přehled asymptotických rychlostí jednotlivých řazení. Ilustrační experiment řazení

ALG 09. Radix sort (přihrádkové řazení) Counting sort. Přehled asymptotických rychlostí jednotlivých řazení. Ilustrační experiment řazení ALG Radix sort (přihrádkové řazení) Counting sort Přehled asymptotických rychlostí jednotlivých řazení Ilustrační experiment řazení Radix sort Neseřazeno Řaď podle. znaku Cbb DaD adb DCa CCC add DDb adc

Více

2. Entity, Architecture, Process

2. Entity, Architecture, Process Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Praktika návrhu číslicových obvodů Dr.-Ing. Martin Novotný Katedra číslicového návrhu Fakulta informačních technologií ČVUT v Praze Miloš

Více

Spojové struktury. Jan Faigl. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze. Přednáška 10 A0B36PR1 Programování 1

Spojové struktury. Jan Faigl. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze. Přednáška 10 A0B36PR1 Programování 1 Spojové struktury Jan Faigl Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 10 A0B36PR1 Programování 1 Jan Faigl, 2015 A0B36PR1 Přednáška 10: Spojové struktury

Více

PREPROCESOR POKRAČOVÁNÍ

PREPROCESOR POKRAČOVÁNÍ PREPROCESOR POKRAČOVÁNÍ Chybová hlášení V C# podobně jako v C++ existuje direktiva #error, která způsobí vypsání chybového hlášení překladačem a zastavení překladu. jazyk C# navíc nabízí direktivu #warning,

Více

DC circuits with a single source

DC circuits with a single source Název projektu: utomatizace výrobních procesů ve strojírenství a řemeslech egistrační číslo: Z..07/..0/0.008 Příjemce: SPŠ strojnická a SOŠ profesora Švejcara Plzeň, Klatovská 09 Tento projekt je spolufinancován

Více

Abstraktní třídy, polymorfní struktury

Abstraktní třídy, polymorfní struktury Karel Müller, Josef Vogel (ČVUT FIT) Abstraktní třídy, polymorfní struktury BI-PA2, 2011, Přednáška 9 1/32 Abstraktní třídy, polymorfní struktury Ing. Josef Vogel, CSc Katedra softwarového inženýrství

Více

Databázové systémy II. KIV/DB2 LS 2007/2008. Zadání semestrální práce

Databázové systémy II. KIV/DB2 LS 2007/2008. Zadání semestrální práce Databázové systémy 2 Jméno a příjmení: Jan Tichava Osobní číslo: Studijní skupina: čtvrtek, 4 5 Obor: ININ SWIN E-mail: jtichava@students.zcu.cz Databázové systémy II. KIV/DB2 LS 2007/2008 Zadání semestrální

Více

Jazyk C++ I. Šablony 2

Jazyk C++ I. Šablony 2 Jazyk C++ I Šablony 2 AR 2013/2014 Jazyk C++ I Třídy template class TVektor { T *a; int n; static int PocInstanci; public: TVektor(int _n = 0) : n(_n) { a = new T[n]; PocInstanci++; } ~TVektor()

Více

O makrech, která umí aritmetiku s velkými čísly. Macros Which Handle Arithmetics with Big Numbers. Jan Šustek KMa PřF OU. Brejlov

O makrech, která umí aritmetiku s velkými čísly. Macros Which Handle Arithmetics with Big Numbers. Jan Šustek KMa PřF OU. Brejlov O makrech, která umí aritmetiku s velkými čísly Macros Which Handle Arithmetics with Big Numbers KMa PřF OU Brejlov.. 0 O makrech, která umí aritmetiku s velkými čísly Reprezentace čísel Representation

Více

Datové typy v Javě. Tomáš Pitner, upravil Marek Šabo

Datové typy v Javě. Tomáš Pitner, upravil Marek Šabo Datové typy v Javě Tomáš Pitner, upravil Marek Šabo Úvod k datovým typům v Javě Existují dvě základní kategorie datových typů: primitivní a objektové Primitivní v proměnné je uložena přímo hodnota např.

Více

bfs, dfs, fronta, zásobník, prioritní fronta, halda

bfs, dfs, fronta, zásobník, prioritní fronta, halda bfs, dfs, fronta, zásobník, prioritní fronta, halda Petr Ryšavý 19. září 2017 Katedra počítačů, FEL, ČVUT prohledávání grafů Proč prohledávání grafů Zkontrolovat, zda je sít spojitá. Hledání nejkratší

Více

Topics. Vyhledávání, zejména rozptylování. Slovník - Dictionary. Vyhledávání. Rozptylování - Hashing. Rozptylování - Hashing

Topics. Vyhledávání, zejména rozptylování. Slovník - Dictionary. Vyhledávání. Rozptylování - Hashing. Rozptylování - Hashing 8..007 Datové struktury a algoritmy Vyhlednávání Topics ást Vyhledávání, zejména rozptylování Petr Felkel Rozptylování (hashing) Rozptylovací funkce ešení kolizí Z et zené rozptylování Otev ené rozptylování

Více

Spojová implementace lineárních datových struktur

Spojová implementace lineárních datových struktur Spojová implementace lineárních datových struktur 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

Více

Databáze I. Přednáška 7

Databáze I. Přednáška 7 Databáze I Přednáška 7 Objektové rozšíření SQL Objektově relační databáze SQL:1999 objektové rozšíření SQL vztahuje se k objektově relačním databázovým systémům ukládají objekty do relační databáze umožňují

Více

MIKROPROCESORY PRO VÝKONOVÉ SYSTÉMY. Stručný úvod do programování v jazyce C 1.díl. České vysoké učení technické Fakulta elektrotechnická

MIKROPROCESORY PRO VÝKONOVÉ SYSTÉMY. Stručný úvod do programování v jazyce C 1.díl. České vysoké učení technické Fakulta elektrotechnická MIKROPROCESORY PRO VÝKONOVÉ SYSTÉMY Stručný úvod do programování v jazyce C 1.díl České vysoké učení technické Fakulta elektrotechnická A1B14MIS Mikroprocesory pro výkonové systémy 06 Ver.1.10 J. Zděnek,

Více

2. Mřížky / Záplavové vyplňování

2. Mřížky / Záplavové vyplňování 2. Mřížky / Záplavové vyplňování BI-EP2 Efektivní programování 2 LS 2017/2018 Ing. Martin Kačer, Ph.D. 2011-18 Martin Kačer Katedra teoretické informatiky Fakulta informačních technologií České vysoké

Více

PB161 Programování v jazyce C++ Přednáška 4

PB161 Programování v jazyce C++ Přednáška 4 PB161 Programování v jazyce C++ Přednáška 4 Dynamická alokace Kopírovací konstruktor Přetypování v C++ Nikola Beneš 12. října 2015 PB161 přednáška 4: dynamická alokace, kopírovací konstruktor, casting

Více

bfs, dfs, fronta, zásobník

bfs, dfs, fronta, zásobník bfs, dfs, fronta, zásobník Petr Ryšavý 25. září 2018 Katedra počítačů, FEL, ČVUT prohledávání grafů Proč prohledávání grafů Zkontrolovat, zda je sít spojitá. Hledání nejkratší cesty, plánování cest. Prohledávání

Více

Generování vnitřní reprezentace programu

Generování vnitřní reprezentace programu Generování vnitřní reprezentace programu Miroslav Beneš Dušan Kolář Možnosti překladu Interpretace Okamžité provádění programu Překlad do instrukcí procesoru Závislost na konkrétním typu procesoru Překlad

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 III/2 Inovace a zkvalitnění výuky prostřednictvím ICT Číslo didaktického materiálu EU-OPVK-VT-III/2-ŠR-303 Druh didaktického materiálu DUM Autor RNDr. Václava Šrůtková Jazyk čeština

Více

1 Nejkratší cesta grafem

1 Nejkratší cesta grafem Bakalářské zkoušky (příklady otázek) podzim 2014 1 Nejkratší cesta grafem 1. Uvažujte graf s kladným ohodnocením hran (délka). Definujte formálně problém hledání nejkratší cesty mezi dvěma uzly tohoto

Více

Transportation Problem

Transportation Problem Transportation Problem ١ C H A P T E R 7 Transportation Problem The transportation problem seeks to minimize the total shipping costs of transporting goods from m origins (each with a supply s i ) to n

Více

PAINTING SCHEMES CATALOGUE 2012

PAINTING SCHEMES CATALOGUE 2012 Evektor-Aerotechnik a.s., Letecká č.p. 84, 686 04 Kunovice, Czech Republic Phone: +40 57 57 Fax: +40 57 57 90 E-mail: sales@evektor.cz Web site: www.evektoraircraft.com PAINTING SCHEMES CATALOGUE 0 Painting

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

Návrhové vzory. Jakub Klemsa, Jan Legerský. 30. října Objektově orientované programování.

Návrhové vzory. Jakub Klemsa, Jan Legerský. 30. října Objektově orientované programování. Jakub Klemsa Jan Legerský Objektově orientované programování klemsjak@fjfi.cvut.cz jan.legersky@gmail.com 30. října 2012 návrhový vzor (design pattern) obecné řešení problému, které se využívá při návrhu

Více

MySQL sežere vaše data

MySQL sežere vaše data MySQL sežere vaše data David Karban @davidkarban AWS Certified http://davidkarban.cz/ It s not a bug, it s a feature syndrome Pravděpodobně znáte indexy. Urychlují dotazy. Mohou být řazené, vzestupně i

Více

Zápis programu v jazyce C#

Zápis programu v jazyce C# Zápis programu v jazyce C# Základní syntaktická pravidla C# = case sensitive jazyk rozlišuje velikost písmen Tzv. bílé znaky (Enter, mezera, tab ) ve ZK překladač ignoruje každý příkaz končí ; oddělovač

Více