Datové struktury obsah přednášky 1. Úvod 2. Třídy Type-wrapper (obalový typ) pro primitivní typy automatické převody 3. Automatické převody mezi

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

Download "Datové struktury obsah přednášky 1. Úvod 2. Třídy Type-wrapper (obalový typ) pro primitivní typy automatické převody 3. Automatické převody mezi"

Transkript

1 Datové struktury obsah přednášky 1. Úvod 2. Třídy Type-wrapper (obalový typ) pro primitivní typy automatické převody 3. Automatické převody mezi primitivními a obalovými typy 4. Třídy odkazující sama na sebe (self referential) 5. Dynamické přidělování paměti 6. Spojové seznamy 7. Zásobníky 8. Fronty 9. Stromy 1

2 Úvod 2 statické datové struktury typ array, jedno vícerozměrné spojové seznamy kolekce dat, kde rozšíření / zmenšení seznamu, je provedeno kdykoli za běhu programu

3 Třídy Type-Wrapper pro primitivní typy (obalový typ) 3 primitivní typy a objektové typy na primitivní typy se nedá odkazovat referencí každý primitivní typ má odpovídající třídu type wrapper obalovou třídu v balíčku (java.lang) třídy type-wrapper jsou: Boolean, Byte, Character, Double, Float, Integer, Long, Short třídy type wrapper (obalové třídy) nemohou manipulovat s proměnnými primitivních typů jako s objekty, ale dovolují manipulovat s objekty typových obalových tříd

4 Třídy Type-Wrapper pro primitivní typy (obalový typ) 4 Každá z type wrapper tříd (obalových tříd) je podtřídou třídy Number třídy type wrapper jsou final třídy, nemohou mít podtřídy (extends)

5 Automatické převody mezi primitivními a obalovými typy 5 třídy type wrapper jsou nutné pro ukládání primitivních typů do kolekcí předchozí verze Javy Integer[] integerarray = new Integer[5]; integerarray[0] = new Integer(10); int value = integerarray[0].intvalue(); Java verze 5.0 Integer[] integerarray = new Integer[5]; integerarray[0] = 10; int value = integerarray[0];

6 // drivejsi prirazeni public static void drive() int i2 = 12; Integer ctyri = new Integer(2 * i2); int i6 = 2*ctyri.intValue ctyri.intvalue();... } Osnova 6 public static void nyni() int i2 = 2; Integer ctyri = 2 * i2; int i6 = 2 + ctyri;... }

7 Třídy Self Referential (třídy odkazující se na své prvky) obsahují objekt, který odkazuje na jiný objekt stejné třídy class Node private int data; //datovy atribut private Node nextnode; //referencni atribut 7 public Node(int data) // konstruktor public void setdata(int data) //metody - datove atributy public int getdata() public void setnext( Node next) //metody ref. atributy public Node getnext() }

8 Třídy odkazující se sami na sebe Self-referential-class objects spojené k sobě

9 Dynamické přidělení paměti 9 vytváření a manipulace s dynamickými datovými strukturami vyžaduje dynamické přidělení paměti schopnost programu získat za běhu programu paměťový prostor a posléze ho uvolnit (není-li třeba) Java automaticky čistí paměť od již nepotřebných objektů (nejsou na ně odkazy) Node nodetoadd = new Node(10);

10 Spojové seznamy 10 Spojový seznam Lineární kolekce samoodkazujících tříd (uzlů) Propojení pomocí odkazů Uzly mohou být vkládány nebo rušeny kdekoli ve spojovém seznamu Poslední uzel ukazuje na null (k označení konce seznamu)

11 Spojové seznamy 11 firstnode lastnode... H D Q Spojový seznam grafická reprezentace

12 // ListNode and List class definitions. // class to represent one node in a list class ListNode // package access members; List can access these directly Object data; //datovy atribut ListNode nextnode; // referencni atribut Osnova 12 Třída ListNode // constructor creates a ListNode that refers to object ListNode( Object object ) this( object, null ); } // end ListNode one-argument constructor // constructor creates ListNode that refers to // Object and to next ListNode ListNode( Object object, ListNode node ) data = object; nextnode = node; } // end ListNode two-argument constructor // return reference to data in node Object getobject() return data; // return Object in this node } // end method getobject

13 // return reference to next node in list ListNode getnext() return nextnode; // get next node } // end method getnext } // end class ListNode Osnova 13 // class List definition public class List private ListNode firstnode; private ListNode lastnode; private String name; // string like "list" used in printing // constructor creates empty List with "list" as the name public List() this( "list" ); } // end List no-argument constructor // constructor creates an empty List with a name public List( String listname ) name = listname; firstnode = lastnode = null; } // end List one-argument constructor

14 // insert Object at front of List public void insertatfront( Object insertitem ) if ( isempty() ) // firstnode and lastnode refer to same object firstnode = lastnode = new ListNode( insertitem ); else // firstnode refers to new node firstnode = new ListNode( insertitem, firstnode ); } // end method insertatfront Osnova 14 // insert Object at end of List public void insertatback( Object insertitem ) if ( isempty() ) // firstnode and lastnode refer to same Object firstnode = lastnode = new ListNode( insertitem ); else // lastnode's nextnode refers to new node lastnode = lastnode.nextnode = new ListNode( insertitem ); } // end method insertatback // remove first node from List public Object removefromfront() throws EmptyListException if ( isempty() ) // throw exception if List is empty throw new EmptyListException( name ); Object removeditem = firstnode.data; // retrieve data being removed

15 // update references firstnode and lastnode if ( firstnode == lastnode ) firstnode = lastnode = null; else firstnode = firstnode.nextnode nextnode; Osnova 15 return removeditem; // return removed node data } // end method removefromfront // remove last node from List public Object removefromback() throws EmptyListException if ( isempty() ) // throw exception if List is empty throw new EmptyListException( name ); Object removeditem = lastnode.data; // retrieve data being removed // update references firstnode and lastnode if ( firstnode == lastnode ) firstnode = lastnode = null; else // locate new last node ListNode current = firstnode; // loop while current node does not refer to lastnode while ( current.nextnode nextnode!= lastnode ) current = current.nextnode nextnode; lastnode = current; // current is new lastnode current.nextnode nextnode = null; } // end else

16 return removeditem; // return removed node data } // end method removefromback Osnova 16 // determine whether list is empty public boolean isempty() return firstnode == null; // return true if List is empty } // end method isempty // output List contents public void print() if ( isempty() ) System.out out.printf printf( "Empty" %s\n", name ); return; } // end if System.out out.printf printf( "The" %s is: ", name ); ListNode current = firstnode; // while not at end of list, output current node's data while ( current!= null ) System.out out.printf printf( "%s ", current.data ); current = current.nextnode nextnode; } // end while System.out out.println println( "\n"" ); } // end method print } // end class List

17 // Class EmptyListException definition. public class EmptyListException extends RuntimeException // no-argument constructor public EmptyListException() this( "List" ); // call other EmptyListException constructor } // end EmptyListException no-argument constructor Osnova 17 Třída EmptyException // one-argument constructor public EmptyListException( String name ) super( name + " is empty" ); // call superclass constructor } // end EmptyListException one-argument constructor } // end class EmptyListException

18 // ListTest class to demonstrate List capabilities. public class ListTest public static void main( String args[] ) List list = new List(); // create the List container Osnova 18 Třída ListTest // insert integers in list list.insertatfront insertatfront( -1 ); list.print print(); list.insertatfront insertatfront( 0 ); list.print print(); list.insertatback insertatback( 1 ); list.print print(); list.insertatback insertatback( 5 ); list.print print(); // remove objects from list; print after each removal try Object removedobject = list.removefromfront removefromfront(); System.out out.printf printf( "%s removed\n", removedobject ); list.print print(); removedobject = list.removefromfront removefromfront(); System.out out.printf printf( "%s removed\n", removedobject ); list.print print();

19 removedobject = list.removefromback removefromback(); System.out out.printf printf( "%s removed\n", removedobject ); list.print print(); Osnova 19 removedobject = list.removefromback removefromback(); System.out out.printf printf( "%s removed\n", removedobject ); list.print print(); } // end try catch ( EmptyListException emptylistexception ) emptylistexception.printstacktrace printstacktrace(); } // end catch } // end main } // end class ListTest

20 The list is: -1 The list is: 0-1 Osnova 20 The list is: The list is: removed The list is: removed The list is: removed The list is: 1 1 removed Empty list

21 Spojové seznamy 21 (a) firstnode 7 11 new Listnode 12 (b) firstnode 7 11 new Listnode 12

22 Spojové seznamy 22 (a) firstnode lastnode new Listnode (b) firstnode lastnode new Listnode

23 Spojové seznamy 23 (a) firstnode lastnode (b) firstnode lastnode removeitem

24 Spojové seznamy 24 (a) firstnode lastnode (b) firstnode lastnode removeitem

25 Zásobníky - stacks 25 Zásobník Omezená verze spojového seznamu Přidává a odstraňuje uzly pouze z vrcholu zásobníku Metoda push přidává uzel na vrchol zásobníku Metoda pop odstraňuje uzel z vrcholu zásobníku

26 // Derived from class List. public class StackInheritance extends List // no-argument constructor public StackInheritance() super( "stack " stack" ); } // end StackInheritance no-argument constructor Osnova 26 Zásobník dědičnost // add object to stack public void push( Object object ) insertatfront( object ); } // end method push // remove object from stack public Object pop() throws EmptyListException return removefromfront(); } // end method pop } // end class StackInheritance

27 // Class StackInheritanceTest. import com.deitel deitel.jhtp6.ch17..jhtp6.ch17.stackinheritance StackInheritance; import com.deitel deitel.jhtp6.ch17..jhtp6.ch17.emptylistexception EmptyListException; public class StackInheritanceTest public static void main( String args[] ) StackInheritance stack = new StackInheritance(); Osnova 27 Třída ZasobnikTest // use push method stack.push push( -1 ); stack.print print(); stack.push push( 0 ); stack.print print(); stack.push push( 1 ); stack.print print(); stack.push push( 5 ); stack.print print(); // remove items from stack try Object removedobject = null;

28 while ( true ) removedobject = stack.pop(); // use pop method System.out out.printf printf( "%s popped\n", removedobject ); stack.print print(); } // end while } // end try catch ( EmptyListException emptylistexception ) emptylistexception.printstacktrace printstacktrace(); } // end catch } // end main } // end class StackInheritanceTest Osnova 28

29 The stack is: -1 The stack is: 0-1 Osnova 29 The stack is: The stack is: popped The stack is: popped The stack is: popped The stack is: -1-1 popped Empty stack struktury.emptylistexception: : stack is empty at struktury.list.removefromfront(list.java:79) at struktury.stackinheritance.pop(stackinheritance.java:20) at struktury.stackinheritancetest.main (StackInheritanceTest.java:26)

30 // Class StackComposition definition with composed List object. public class StackComposition private List stacklist; //datovy atribut seznam Osnova 30 Zásobník skládání // no-argument constructor public StackComposition() stacklist = new List( "stack" stack" ); } // end StackComposition no-argument constructor // add object to stack public void push( Object object ) stacklist.insertatfront insertatfront( object ); } // end method push // remove object from stack public Object pop() throws EmptyListException return stacklist.removefromfront removefromfront(); } // end method pop // determine if stack is empty public boolean isempty() return stacklist.isempty isempty(); } // end method isempty

31 // output stack contents public void print() stacklist.print print(); } // end method print } // end class StackComposition Osnova 31

32 Fronty queues 32 Fronta Podobná frontě ze supermarketu u pokladny Uzly jsou vkládány pouze na konec (tail) Metoda enqueue Uzly jsou odstraňovány z čela fronty (head of the front) Metoda dequeue

33 // Class Queue. public class Queue private List queuelist; // datovy atribut seznam Osnova 33 Fronta skládání // no-argument constructor public Queue() queuelist = new List( "queue" queue" ); } // end Queue no-argument constructor // add object to queue public void enqueue( Object object ) queuelist.insertatback insertatback( object ); } // end method enqueue // remove object from queue public Object dequeue() throws EmptyListException return queuelist.removefromfront removefromfront(); } // end method dequeue // determine if queue is empty public boolean isempty() return queuelist.isempty isempty(); } // end method isempty

34 // output queue contents public void print() queuelist.print print(); } // end method print } // end class Queue Osnova 34

35 // Class QueueTest. import com.deitel deitel.jhtp6.ch17..jhtp6.ch17.queue Queue; import com.deitel deitel.jhtp6.ch17..jhtp6.ch17.emptylistexception EmptyListException; public class QueueTest public static void main( String args[] ) Queue queue = new Queue(); Osnova 35 Třída FrontaTest // use enqueue method queue.enqueue enqueue( -1 ); queue.print print(); queue.enqueue enqueue( 0 ); queue.print print(); queue.enqueue enqueue( 1 ); queue.print print(); queue.enqueue enqueue( 5 ); queue.print print();

36 // remove objects from queue try Object removedobject = null; Osnova 36 while ( true ) removedobject = queue.dequeue dequeue(); // use dequeue method System.out out.printf printf( "%s dequeued\n", removedobject ); queue.print print(); } // end while } // end try catch ( EmptyListException emptylistexception ) emptylistexception.printstacktrace printstacktrace(); } // end catch } // end main } // end class QueueTest

37 The queue is: -1 Osnova 37 The queue is: -1 0 The queue is: true The queue is: dequeued The queue is: dequeued The queue is: dequeued The queue is: 5 5 dequeued Empty queue struktury.emptylistexception: : queue is empty at struktury.list.removefromfront(list.java:79) at struktury.queue.dequeue(queue.java:22) at struktury.queuetest.main(queuetest.java:26)

38 Stromy trees 38 Strom Nelineární, dvoudimenzionální datová struktura se speciálními vlastnostmi (spojové seznamy, zásobníky, fronty jsou lineární datové struktury) Uzly stromu obsahují dva nebo více odkazů (referencí) Kořenový uzel (Root node) je první uzel (počátek) Každá reference odkazuje na dítě (child) Levé dítě je prvním uzlem v levém podstromu (subtree) Pravé dítě je prvním uzlem v pravém podstromu Děti v uzlech se nazývají sourozenci (siblings) Uzly, které nemají pokračování (děti) jsou uzly listů (leaf nodes)

39 Stromy - pokračování 39 Binary search tree Speciálnířazení uzlů bez duplikátů (hodnot uzlů) Hodnoty v levých podstromech jsou menší než hodnoty v pravých podstromech Inorder traversal - průchod Prochází levý podstrom, získá hodnotu uzlu, prochází pravý podstrom Preorder traversal - průchod Získá datový atribut uzlu, prochází levý podstrom, prochází pravý podstrom Postorder traversal - průchod Prochází levý podstrom, prochází pravý podstrom, získá datový atribut (hodnotu) uzlu

40 Stromy - pokračování 40 B A D C Binární strom grafická reprezentace.

41 Stromy - pokračování Binary search tree obsahující 12 hodnot.

42 // Definition of class TreeNode and class Tree. Osnova 42 // class TreeNode definition class TreeNode // package access members TreeNode leftnode; // left node int data; // node value TreeNode rightnode; // right node // constructor initializes data and makes this a leaf node public TreeNode( int nodedata ) data = nodedata; leftnode = rightnode = null; // node has no children } // end TreeNode no-argument constructor // locate insertion point and insert new node; ignore duplicate values public void insert( int insertvalue ) // insert in left subtree if ( insertvalue < data ) // insert new TreeNode if ( leftnode == null ) leftnode = new TreeNode( insertvalue ); else // continue traversing left subtree leftnode.insert( insertvalue ); } // end if

43 else if ( insertvalue > data ) // insert in right subtree // insert new TreeNode if ( rightnode == null ) rightnode = new TreeNode( insertvalue ); else // continue traversing right subtree rightnode.insert( insertvalue ); } // end else if } // end method insert } // end class TreeNode Osnova 43 // class Tree definition public class Tree private TreeNode root; // constructor initializes an empty Tree of integers public Tree() root = null; } // end Tree no-argument constructor // insert a new node in the binary search tree public void insertnode( int insertvalue ) if ( root == null ) root = new TreeNode( insertvalue ); // create the root node here else root.insert( insertvalue ); // call the insert method } // end method insertnode

44 // begin preorder traversal public void preordertraversal() preorderhelper( root ); } // end method preordertraversal Osnova 44 // recursive method to perform preorder traversal private void preorderhelper( TreeNode node ) if ( node == null ) return; System.out out.printf printf( "%d ", node.data ); // output node data preorderhelper( node.leftnode ); // traverse left subtree preorderhelper( node.rightnode ); // traverse right subtree } // end method preorderhelper // begin inorder traversal public void inordertraversal() inorderhelper( root ); } // end method inordertraversal

45 // recursive method to perform inorder traversal private void inorderhelper( TreeNode node ) if ( node == null ) return; Osnova 45 inorderhelper( node.leftnode ); // traverse left subtree System.out out.printf printf( "%d ", node.data ); // output node data inorderhelper( node.rightnode ); // traverse right subtree } // end method inorderhelper // begin postorder traversal public void postordertraversal() postorderhelper( root ); } // end method postordertraversal // recursive method to perform postorder traversal private void postorderhelper( TreeNode node ) if ( node == null ) return; postorderhelper( node.leftnode ); // traverse left subtree postorderhelper( node.rightnode ); // traverse right subtree System.out out.printf printf( "%d ", node.data ); // output node data } // end method postorderhelper } // end class Tree

46 // This program tests class Tree. import java.util util.random Random; public class TreeTest public static void main( String args[] ) Tree tree = new Tree(); int value; Random randomnumber = new Random(); Osnova 46 Třída TreeTest System.out out.println println( "Inserting" the following values: " ); // insert 10 random integers from 0-99 in tree for ( int i = 1; i <= 10; i++ ) value = randomnumber.nextint nextint( 100 ); System.out out.print print( value + " " ); tree.insertnode insertnode( value ); } // end for System.out out.println ( "\n\npreorder" npreorder traversal" ); tree.preordertraversal preordertraversal(); // perform preorder traversal of tree System.out out.println ( "\n\ninorder" ninorder traversal" ); tree.inordertraversal inordertraversal(); // perform inorder traversal of tree

47 System.out out.println ( "\n\npostorder" npostorder traversal" ); tree.postordertraversal postordertraversal(); // perform postorder traversal of tree System.out out.println println(); } // end main } // end class TreeTest Osnova 47 Inserting the following values: Preorder traversal Inorder traversal Postorder traversal System.out.println ( "\n\npostorder traversal" ); tree.postorertraversal(); // perform postorder traversal of tree System.out.println(); } // end main } // end class TreeTest

Datové struktury obsah přednášky 1. Úvod 2. Třídy Type-wrapper (obalový typ) pro primitivní typy automatické převody 3. Automatické převody mezi

Datové struktury obsah přednášky 1. Úvod 2. Třídy Type-wrapper (obalový typ) pro primitivní typy automatické převody 3. Automatické převody mezi OOPR_11 1 Datové struktury obsah přednášky 1. Úvod 2. Třídy Type-wrapper (obalový typ) pro primitivní typy automatické převody 3. Automatické převody mezi primitivními a obalovými typy 4. Třídy odkazující

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

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

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

Stromy. Příklady. Rekurzivní datové struktury. Základní pojmy

Stromy. Příklady. Rekurzivní datové struktury. Základní pojmy Základní pojmy Stromy 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 Graf uzly hrany orientované / neorientované Souvislý

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

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

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

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

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

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

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

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

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

Teoretické minimum z PJV

Teoretické minimum z PJV Teoretické minimum z PJV Pozn.: následující text popisuje vlastnosti jazyka Java zjednodušeně pouze pro potřeby výuky. Třída Zavádí se v programu deklarací třídy což je část programu od klíčových slov

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

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

Čá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

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

Algoritmy a datové struktury

Algoritmy a datové struktury Algoritmy a datové struktury Stromy 1 / 32 Obsah přednášky Pole a seznamy Stromy Procházení stromů Binární stromy Procházení BS Binární vyhledávací stromy 2 / 32 Pole Hledání v poli metodou půlení intervalu

Více

Programování v Javě I. Únor 2009

Programování v Javě I. Únor 2009 Seminář Java Programování v Javě I Radek Kočí Fakulta informačních technologií VUT Únor 2009 Radek Kočí Seminář Java Programování v Javě (1) 1/ 44 Téma přednášky Datové typy Deklarace třídy Modifikátory

Více

KTE / ZPE Informační technologie

KTE / ZPE Informační technologie 4 KTE / ZPE Informační technologie Ing. Petr Kropík, Ph.D. email: pkropik@kte.zcu.cz tel.: +420 377 63 4639, +420 377 63 4606 (odd. informatiky) Katedra teoretické elektrotechniky FEL ZČU Plzeň Největší

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

Programování v Javě I. Leden 2008

Programování v Javě I. Leden 2008 Seminář Java Programování v Javě I Radek Kočí Fakulta informačních technologií VUT Leden 2008 Radek Kočí Seminář Java Programování v Javě (1) 1/ 45 Téma přednášky Datové typy Deklarace třídy Modifikátory

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

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

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

14.4.1. Typický prvek kolekce pro české řazení

14.4.1. Typický prvek kolekce pro české řazení 14.4. Co všechno by měl mít typický prvek kolekce 177 Poznámka: Třídy BigInteger, BigDecimal a Date budou vysvětleny v částech [15./183, [16./185 a [18.1./204. 14.4.1. Typický prvek kolekce pro české řazení

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

Reprezentace dat v informačních systémech. Jaroslav Šmarda

Reprezentace dat v informačních systémech. Jaroslav Šmarda Reprezentace dat v informačních systémech Jaroslav Šmarda Reprezentace dat v informačních systémech Reprezentace dat v počítači Datové typy Proměnná Uživatelské datové typy Datové struktury: pole, zásobník,

Více

Implementace abstraktních datových typů. Zásobník (Stack) Fronta (Queue) Obousměrná fronta (Dequeue) Vektor (Vector) Seznam (List)

Implementace abstraktních datových typů. Zásobník (Stack) Fronta (Queue) Obousměrná fronta (Dequeue) Vektor (Vector) Seznam (List) Implementace abstraktních datových typů Zásobník (Stack) Fronta (Queue) Obousměrná fronta (Dequeue) Vektor (Vector) Seznam (List) ADT Zásobník (Stack) Zásobník je datová struktura, do které se objekty

Více

Algoritmizace a programování

Algoritmizace a programování Algoritmizace a programování Struktura programu Vytvoření nové aplikace Struktura programu Základní syntaktické elementy První aplikace Verze pro akademický rok 2012/2013 1 Nová aplikace NetBeans Ve vývojovém

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

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

Java Výjimky Java, zimní semestr

Java Výjimky Java, zimní semestr Java Výjimky 1 Výjimky (exceptions) hlášení a ošetření chyb výjimka signalizuje nějaký chybový stav výjimka = instance třídy java.lang.throwable dvě podtřídy java.lang.error a java.lang.exception konkrétní

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

5 Rekurze a zásobník. Rekurzivní volání metody

5 Rekurze a zásobník. Rekurzivní volání metody 5 Rekurze a zásobník Při volání metody z metody main() se do zásobníku uloží aktivační záznam obsahující - parametry - návratovou adresu, tedy adresu, kde bude program pokračovat v metodě main () po skončení

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

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

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

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ý 1 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

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

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

Pokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat.

Pokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat. Pokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat. 1. Odkrokujte následující program a s použitím notace z přednášky sledujte stav paměti

Více

Projekty pro výuku programování v jazyce Java

Projekty pro výuku programování v jazyce Java JIHOČESKÁ UNIVERZITA V ČESKÝCH BUDĚJOVICÍCH Pedagogická fakulta Katedra informatiky Akademický rok: 2006/2007 TEZE BAKALÁŘSKÉ PRÁCE Projekty pro výuku programování v jazyce Java Jméno: František Přinosil

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

Pokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat.

Pokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat. Pokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat. 1. Odkrokujte následující program a s použitím notace z přednášky popište stav paměti

Více

Správa paměti. Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta, 2016

Správa paměti. Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta, 2016 Správa paměti Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta, 2016 Objektové modelování, B36OMO 10/2016, Lekce 2 https://cw.fel.cvut.cz/wiki/courses/xxb36omo/start

Více

Přehled probírané látky

Přehled probírané látky OOPR_04 1 Přehled probírané látky asociace (relace) mezi třídami popis množiny spojení mezi objekty skládání objektů - upřesněný typ asociace, vazba mezi objekty kompozice objektů (velmi pevná vazba mezi

Více

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

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

Více

Java a XML. 10/26/09 1/7 Java a XML

Java a XML. 10/26/09 1/7 Java a XML Java a XML Java i XML jsou přenositelné V javě existuje podpora pro práci s XML, nejčastější akce prováděné při zpracování XML: načítání XML elementů generování nových elementů nebo úprava starého zápis

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

RMI Remote Method Invocation

RMI Remote Method Invocation 2. cvičení RMI Remote Method Invocation 2007/09 ver.2.0 1 RMI co to je? vyvolání metody z jiné JVM lokalizace vzdáleného objektu komunikace se vzdálenými objekty přenos objektu v bytecode typicky klient

Více

Pokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat.

Pokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat. Pokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat. 1. Odkrokujte následující program a s použitím notace z přednášky sledujte stav paměti

Více

Principy objektově orientovaného programování

Principy objektově orientovaného programování Principy objektově orientovaného programování Třídy a objekty 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 C E T

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

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

Generické programování

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

Více

9. přednáška - třídy, objekty

9. přednáška - třídy, objekty třída String a její použití kolekce, typované kolekce 9. přednáška - třídy, objekty Algoritmizace (Y36ALG), Šumperk - 9. přednáška 1 Třída String Objekty knihovní třídy String jsou řetězy znaků Od ostatních

Více

boolean hasnext() Object next() void remove() Kolekce

boolean hasnext() Object next() void remove() Kolekce 11. Kontejnery Kontejnery Kontejnery jako základní dynamické struktury v Javě Kolekce, iterátory (Collection, Iterator) Seznamy (rozhraní List, třídy ArrayList, LinkedList) Množiny (rozhraní Set, třída

Více

Počítačové laboratoře bez tajemství aneb naučme se učit algoritmizaci a programování s využitím robotů CZ.1.07/1.3.12/04.0006

Počítačové laboratoře bez tajemství aneb naučme se učit algoritmizaci a programování s využitím robotů CZ.1.07/1.3.12/04.0006 Počítačové laboratoře bez tajemství aneb naučme se učit algoritmizaci a programování s využitím robotů CZ.1.07/1.3.12/04.0006 Lekce 1 Jazyk Java Tento projekt je spolufinancován Evropským sociálním fondem

Více

Neměnné objekty. Tomáš Pitner, upravil Marek Šabo

Neměnné objekty. Tomáš Pitner, upravil Marek Šabo Neměnné objekty Tomáš Pitner, upravil Marek Šabo Neměnné objekty Neměnný (immutable) objekt nemůže být po jeho vytvoření modifikován Bezpečně víme, co v něm až do konce života bude Tudíž může být souběžně

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

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

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

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

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

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

Programování v C++ 1, 16. cvičení Programování v C++ 1, 16. cvičení binární vyhledávací strom 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é

Více

Dynamické datové struktury IV.

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

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

Základy jazyka C# Obsah přednášky. Architektura.NET Historie Vlastnosti jazyka C# Datové typy Příkazy Prostory jmen Třídy, rozhraní

Základy jazyka C# Obsah přednášky. Architektura.NET Historie Vlastnosti jazyka C# Datové typy Příkazy Prostory jmen Třídy, rozhraní Základy jazyka C# 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 přednášky Architektura.NET Historie Vlastnosti

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

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

ABSTRAKTNÍ DATOVÉ TYPY Jurdič Radim ABSTRAKTNÍ DATOVÉ TYPY Veškeré hodnoty, s nimiž v programech pracujeme, můžeme rozdělit do několika skupin zvaných datové typy. Každý datový typ představuje množinu hodnot, nad kterými můžeme

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

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

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

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

Ú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

Úvod do programování - Java. Cvičení č.4

Úvod do programování - Java. Cvičení č.4 Úvod do programování - Java Cvičení č.4 1 Sekvence (posloupnost) Sekvence je tvořena posloupností jednoho nebo více příkazů, které se provádějí v pevně daném pořadí. Příkaz se začne provádět až po ukončení

Více

7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd

7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd 7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd Algoritmizace (Y36ALG), Šumperk - 7. přednáška 1 Třída jako zdroj funkcionality Třída v jazyku Java je programová jednotka tvořená

Více

typová konverze typová inference

typová konverze typová inference Seminář Java Programování v Javě II Radek Kočí Fakulta informačních technologií VUT Únor 2008 Radek Kočí Seminář Java Programování v Javě (2) 1/ 36 Téma přednášky Rozhraní: použití, dědičnost Hierarchie

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

Generické typy. Podrobněji: The Java Language Specification ( Third Edition ) , 18

Generické typy. Podrobněji: The Java Language Specification ( Third Edition ) , 18 Generické typy jsou třídy či interfejsy deklarující tzv. typové parametry jimiž: - systematizují typovou kontrolu kompilátorem, - vyjadřují jasněji smysl, zlepšují čitelnost a robustnost programu, - ulehčují

Více

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

Programování v C++ 2, 7. cvičení Programování v C++ 2, 7. cvičení spojový seznam 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 Dědění

Více

Rekurze a zásobník. Jak se vypočítá rekurzivní program? volání metody. vyšší adresy. main(){... fa(); //push ret1... } ret1

Rekurze a zásobník. Jak se vypočítá rekurzivní program? volání metody. vyšší adresy. main(){... fa(); //push ret1... } ret1 Rekurze a zásobník Jak se vypočítá rekurzivní program? volání metody vyšší adresy ret1 main(){... fa(); //push ret1... PC ret2 void fa(){... fb(); //push ret2... return //pop void fb(){... return //pop

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

Definice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky

Definice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky JAVA Třídy Definice třídy úplná definice [public] [abstract] [final] class Jmeno [extends Predek] [impelements SeznamInterfacu] {... // telo tridy public veřejná třída abstract nesmí být vytvářeny instance

Více

IRAE 07/08 Přednáška č. 2. atr1 atr2. atr1 atr2 -33

IRAE 07/08 Přednáška č. 2. atr1 atr2. atr1 atr2 -33 Objekt jako proměnná Objekty a metody Objekt = proměnná referenčního typu vznik pomocí new, chování viz pole jako referenční proměnná minulý semestr Stack Heap objekt ref this 10 20 atr1 atr2 jinyobjekt

Více

pak celou úlohu. ani Jako obvykle je static int M, N; [] key, L, R; NIL = -1; cost; roota, rootb; throws IOExceptio // tree roots on { static void

pak celou úlohu. ani Jako obvykle je static int M, N; [] key, L, R; NIL = -1; cost; roota, rootb; throws IOExceptio // tree roots on { static void Úloha nevžaduje žádnou zvláštníí manipulacii se stromy nebo jejich uzly, kroměě jediné neustále opakované operace Insert, proto bude vhodné volitt reprezentaci pokud možno úsporně. Nejprve ukáže me řešení

Více

Class loader. každá třída (java.lang.class) obsahuje referenci na svůj class loader. Implementace class loaderu

Class loader. každá třída (java.lang.class) obsahuje referenci na svůj class loader. Implementace class loaderu Seminář Java Zavádění tříd Radek Kočí Fakulta informačních technologií VUT Duben 2008 Radek Kočí Seminář Java Zavádění tříd 1/ 16 JVM zavádí třídy dynamicky Class loader objekt schopný zavádět třídy abstraktní

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

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

Soubor jako posloupnost bytů

Soubor jako posloupnost bytů Soubory Soubor je množina údajů uložená ve vnější paměti počítače, obvykle na disku Pro soubor jsou typické tyto operace. otevření souboru čtení údaje zápis údaje uzavření souboru Přístup k údajům (čtení

Více

Rekurzivní algoritmy

Rekurzivní algoritmy Rekurzivní algoritmy 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í algoritmy (BI-EFA) ZS

Více

Java Řetězce Java, zimní semestr

Java Řetězce Java, zimní semestr Java Řetězce 1 Řetězec instance třídy java.lang.string kompilátor s nimi zachází téměř jako s primit. typy řetězcové konstanty = instance třídy String nezměnitelné!!! pro změny třídy StringBuffer, StringBuilder

Více

Úvodní informace. Petr Hnětynka 2/2 Zk/Z

Úvodní informace. Petr Hnětynka  2/2 Zk/Z JAVA Úvod Úvodní informace Petr Hnětynka hnetynka@d3s.mff.cuni.cz http://d3s.mff.cuni.cz/~hnetynka/java/ 2/2 Zk/Z zkouška písemný test zápočet zápočtový test u počítače max 5 opakování zápočtový program

Více

Java - výjimky. private void vstup() throws IOException {... }

Java - výjimky. private void vstup() throws IOException {... } Java - výjimky Tato kapitola ukazuje na několika příkladech práci s výjimkami v Javě. Klíčové pojmy: Výjimka, hierarchie výjimek, zachytávání výjimek, blok try-catch, tvorba vlastních výjimek, propagace

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