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

Save this PDF as:
 WORD  PNG  TXT  JPG

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

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

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

4 Třídy Type-Wrapper pro primitivní typy (obalový typ) 4 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

5 Třídy Type-Wrapper pro primitivní typy (obalový typ) 5 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)

6 Automatické převody mezi primitivními a obalovými typy 6 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];

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

8 Třídy Self Referential (třídy odkazující se na své prvky) obsahují objekt, který odkazuje na jiný objekt stejné třídy class Uzel private int data; //datový atribut i objektový typ private Uzel nextuzel; //referenční atribut 8 public Uzel(int data) // konstruktor public void setdata(int data) //metody - datové atributy public int getdata() public void setnext( Uzel next) //metody ref. atributy public Uzel getnext()

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

10 Dynamické přidělení paměti 10 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);

11 Spojové seznamy 11 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 Poslední uzel ukazuje na null (k označení konce seznamu)

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

13 public class Uzel private Object data; //datovy atribut private Uzel dalsiuzel; // referencni atribut Osnova // konstruktor vytvarejici uzel, vazba na object public Uzel( Object object ) this( object, null ); // konstruktor tvorici uzel s vazbou na dalsi uzel public Uzel( Object object, Uzel node ) data = object; dalsiuzel = node; // pristup k datove slozce uzlu public Object getdata() // vraci atribut data daneho uzlu return data; public Uzel getdalsiuzel() // dej dalsi uzel return dalsiuzel; public void setdalsiuzel(uzel nuzel) dalsiuzel = nuzel;

14 Diagram tříd 14

15 public class EmptyListException extends RuntimeException // konstruktor bez parametru public EmptyListException() // vola jiny mkonstruktor EmptyListException this( "Spojovy seznam" ); Osnova Třída EmptyListException // konstruktor s jednim parametrem public EmptyListException( String name ) super( name + " je prazdny" ); // vola konstruktor nadtridy

16 Třída SpojovySeznam 16 Tato třída je vlastně tvůrcem spojového seznamu a využívá ke své činnosti dříve deklarovanou třídu Uzel. Má tří datové atributy. První dva ukazují na začátek resp. konec První dva ukazují na začátek resp. konec spojového seznamu a třetím datovým atributem je jméno spojového seznamu.

17 Třída SpojovySeznam 17 Nejdůležitějšími metodami této třídy jsou čtyři metody: insertatfront() vloží uzel na začátek spojového seznamu, insertatback() vloží uzel na konec spojového seznamu, removefromfront() odebere a tím odstraní uzel ze začátku spojového seznamu, removefromback() odebere a tím odstraní uzel z konce spojového seznamu.

18 Třída SpojovySeznam 18 Spojovým seznamem můžeme procházet jednosměrně, proto je operace removefromback() obtížnější. Úpravu spojového seznamu musíme začít od prvního uzlu a pokračovat ovat rekurzivně až na poslední uzel.

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

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

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

22 public class SpojovySeznam private Uzel prvniuzel; private Uzel posledniuzel; private String jmeno; // nazev seznamu pro tisk Osnova // konstruktor tvorici prazdny seznam se jmenem list public List() this( "Spojovy seznam" ); // konstruktor tvorici prazdny seznam se zadanym jmenem public SpojovySeznam( String jmenoseznamu ) jmeno = jmenoseznamu; prvniuzel = posledniuzel = null; // vlozi Object na zacatek seznamu public void insertatfront( Object insertitem ) // prvniuzel a posledniuzel odkazuji na stejny objekt if ( isempty() ) prvniuzel = posledniuzel = new Uzel( insertitem ); else // prvniuzel odkazuje na novy uzel prvniuzel = new Uzel( insertitem, prvniuzel );

23 // vlozi Object na konec seznamu (List) public void insertatback(object vlozenadata ) // prvniuzel a posledniuzel odkazuji na stejny Object if ( isempty() ) prvniuzel = posledniuzel = new Uzel( vlozenadata ); else Osnova // posledniuzel a jeho dalsiuzel odkazuje na novy uzel posledniuzel = posledniuzel.getdalsiuzel(); posledniuzel.setdalsiuzel(new Uzel(vlozenaData));

24 // odstran prvni uzel ze seznamu public Object removefromfront() throws EmptyListException if ( isempty() ) // throw exception if List is empty throw new EmptyListException( jmeno ); Osnova // zpristupneni odstranovanych dat Object odstranenadata = prvniuzel.getdata(); // aktualizace odkazu prvniuzel a posledniuzel if ( prvniuzel == posledniuzel ) prvniuzel = posledniuzel = null; else prvniuzel = prvniuzel.getdalsiuzel(); return odstranenadata; // vraci data odstraneneho uzlu

25 // odstraneni posledniho uzlu ze seznamu public Object removefromback() throws EmptyListException if ( isempty() ) // throw exception if List is empty throw new EmptyListException( jmeno ); Osnova // zpristupni data odstraneneho uzlu Object removeditem = posledniuzel.getdata(); // aktualizuje odkazy na prvnihouzel a posledniuzel if ( prvniuzel == posledniuzel ) prvniuzel = posledniuzel = null; else // umisti novy uzel jako poslední Uzel aktualni = prvniuzel; // cykluje dokud current uzel neodkazuje na // posledniuzel rekurze while ( aktualni.getdalsiuzel()!= posledniuzel ) aktualni = aktualni.getdalsiuzel(); // aktualni je novy posledniuzel posledniuzel = aktualni; aktualni.setdalsiuzel(null); // end else return removeditem; // end method removefromback

26 // zjisteni, zda je list prazdny public boolean isempty() return prvniuzel == null; Osnova // tisk seznamu (list) public void print() if ( isempty() ) System.out.printf( "Empty %s\n", jmeno ); return; System.out.printf( "The %s is: ", jmeno ); Uzel current = prvniuzel; // rekurze while ( current!= null ) System.out.printf( "%s ", current.getdata() ); current = current.getdalsiuzel(); System.out.println( "\n" );

27 public class SpojovySeznamTest public static void main(string[] args) SpojovySeznam list = new SpojovySeznam(); // vkladani celych cisel do seznamu list.insertatfront( -1 ); list.print(); list.insertatfront( 0 ); list.print(); list.insertatback( 1 ); list.print(); list.insertatback( 5 ); list.print(); Osnova Třída SpojovySeznamTest 1/2

28 // odstranovani prvku seznamu, tisk po kazde operaci try Object removedobject = list.removefromfront(); System.out.printf( "%s odstranen\n", removedobject ); list.print(); Osnova Třída SpojiovySeznamTest 2/2 removedobject = list.removefromfront(); System.out.printf( "%s odstranen\n", removedobject ); list.print(); removedobject = list.removefromback(); System.out.printf( "%s odstranen\n", removedobject ); list.print(); removedobject = list.removefromback(); System.out.printf( "%s odstranen\n", removedobject ); list.print(); // end try catch ( EmptyListException emptylistexception ) emptylistexception.printstacktrace(); // end catch

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

30 Zásobníky - stacks 30 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

31 Dědičnost versus skládání (delegování) 31 Uživatelské kolekce můžeme vytvářet dvěma způsoby: s využitím dědičnosti s využitím skládání (delegování) Příkladem bude struktura zásobníku

32 // Dedicnost od tridy List public class StackInheritance extends List // bez parametricky konstruktor public StackInheritance() super( "stack" ); Osnova 32 Zásobník dědičnost // pridani objectu do zasobniku public void push( Object object ) insertatfront( object ); // odebrani objektu ze zasobniku public Object pop() throws EmptyListException return removefromfront();

33 public class StackInheritanceTest public static void main( String args[] ) StackInheritance stack = new StackInheritance(); Osnova 33 Třída ZasobnikTest // use push method stack.push( -1 ); stack.print(); stack.push( 0 ); stack.print(); stack.push( 1 ); stack.print(); stack.push( 5 ); stack.print(); // odebrani prvku ze zasobniku try Object removedobject = null;

34 while ( true ) removedobject = stack.pop(); // pouziti metody pop() System.out.printf( "%s popped\n", removedobject ); stack.print(); catch ( EmptyListException emptylistexception ) emptylistexception.printstacktrace(); // end main Osnova 34

35 The stack is: -1 The stack is: 0-1 Osnova 35 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)

36 // skladani, delegovani public class StackComposition private List stacklist; //datovy atribut seznam // konstruktor bez parametru public StackComposition() stacklist = new List( "stack" ); Osnova 36 Zásobník skládání, delegovani // pridani objectu do zasobniku public void push( Object object ) stacklist.insertatfront( object ); // odebrani objectu ze zasobniku public Object pop() throws EmptyListException return stacklist.removefromfront(); // zjisteni, zda je zasobnik prazdny public boolean isempty() return stacklist.isempty();

37 // tisk obsahu zasobniku public void print() stacklist.print(); Osnova 37

38 Fronty queues 38 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

39 // Class Queue. public class Queue private List queuelist; // datovy atribut seznam // bezparametricky konstruktor public Queue() queuelist = new List( "queue" ); Osnova 39 Fronta skládání, delegovani // pridani objectu do fronty public void enqueue( Object object ) queuelist.insertatback( object ); // odebrani objektu z fronty public Object dequeue() throws EmptyListException return queuelist.removefromfront(); // zjisteni, zda je fronta prazdne public boolean isempty() return queuelist.isempty();

40 // tisk obsahu fronty public void print() queuelist.print(); Osnova 40

41 public class QueueTest public static void main( String args[] ) Queue queue = new Queue(); Osnova 41 Třída FrontaTest // use enqueue method queue.enqueue( -1 ); queue.print(); queue.enqueue( 0 ); queue.print(); queue.enqueue( 1 ); queue.print(); queue.enqueue( 5 ); queue.enqueue( 5 ); queue.print();

42 // odebrani objektu z fronty try Object removedobject = null; Osnova 42 while ( true ) removedobject = queue.dequeue(); System.out.printf( "%s dequeued\n", removedobject ); queue.print(); catch ( EmptyListException emptylistexception ) emptylistexception.printstacktrace();

43 The queue is: -1 Osnova 43 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)

44 Stromy trees 44 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)

45 Stromy - pokračování 45 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

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

47 Diagram tříd 47

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

49 public class UzelStromu private UzelStromu levyuzel; private int data; // hodnota, objekt uzlu private UzelStromu pravyuzel; Osnova // konstruktor, inicializace datoveho atributu public UzelStromu( int datauzlu ) data = datauzlu; levyuzel = pravyuzel = null; // uzly nemaji deti public UzelStromu getlevyuzel() return levyuzel; public int getdata() return data; public UzelStromu getpravyuzel() return pravyuzel;

50 // nalezne bod pro vlozani a vlozi novy uzel; // ignoruje duplikovane hodnoty public void insert( int vkladanahodnota ) Osnova // vlozi do leveho podstromu if ( vkladanahodnota < data ) // vlozi novy UzelStromu if ( levyuzel == null ) levyuzel = new UzelStromu( vkladanahodnota ); else // pokracuje v traverzovani leveho podstromu levyuzel.insert( vkladanahodnota ); // end if //vkladani do praveho podstromu else if ( vkladanahodnota > data ) // vlozi new UzelStromu if ( pravyuzel == null ) pravyuzel = new UzelStromu( vkladanahodnota ); else // pokracuje v traverzovani praveho podstromu pravyuzel.insert( vkladanahodnota ); // end else if // end metody insert

51 Třída Strom 51 Tato třída deklaruje jen jeden datový atribut a tím je odkaz na kořen stromu (root). Z tohoto bodu se odvíjí všechny požadované operace, tedy operace pro vložení nového uzlu stromu a operace průchodu stromem. Třída dále deklaruje konstruktor a metodu vlozituzel().

52 public class Strom private UzelStromu root; // konstruktor inicializuje prazdny strom celych cisel public Strom() root = null; Osnova // vlozi novy uzel do binarne prohledavaneho stromu public void vlozituzel( int vkladanahodnota ) if ( root == null ) // zde vytvori uzel root root = new UzelStromu( vkladanahodnota ); else root.insert( vkladanahodnota ); // end metody vlozituzel // zacatek pruchodu preorder public void preordertraversal() preorderhelper( root );

53 // recursivni metoda ktera provadi pruchod preorder private void preorderhelper( UzelStromu node ) if ( node == null ) return; Osnova // vystup dat.atributu uzlu System.out.printf( "%d ", node.getdata()); // pruchod levym podstromem preorderhelper( node.getlevyuzel() ); // pruchod pravym podstromem preorderhelper( node.getpravyuzel() ); // konec metody preorderhelper() // zacatek pruchodu inorder public void inordertraversal() inorderhelper( root ); // end metody inordertraversal

54 // recursivni metoda ktera provadi pruchod inorder private void inorderhelper( UzelStromu node ) if ( node == null ) return; Osnova // pruchod levym podstromem inorderhelper( node.getlevyuzel() ); // vystup dat.atributu uzlu System.out.printf( "%d ", node.getdata() ); // pruchod pravym poduzlem inorderhelper( node.getpravyuzel() ); // zacatek pruchodu postorder public void postordertraversal() postorderhelper( root );

55 // rekursivni metoda pro pruchod postorder (traversal) private void postorderhelper( UzelStromu node ) if ( node == null ) return; Osnova // pruchod levym podstromem postorderhelper( node.getlevyuzel() ); // pruchod pravym podstromem postorderhelper( node.getpravyuzel() ); // vystup dat.atributu uzlu System.out.printf( "%d ", node.getdata() );

56 import java.util.random; public class StromTest public static void main(string[] args) Strom tree = new Strom(); int value; Random randomnumber = new Random(); System.out.println("Inserting the following values: " ); Osnova // vloz 10 nahodnych celych cisel od 0-99 do stromu for ( int i = 1; i <= 10; i++ ) value = randomnumber.nextint( 100 ); System.out.print( value + " " ); tree.vlozituzel( value ); System.out.println ( "\n\npruchod preorder" ); // vykona pruchod preorder stromem tree.preordertraversal(); System.out.println ( "\n\npruchod inorder" ); // vykona pruchod inorder stromem tree.inordertraversal(); System.out.println ( "\n\npruchod postorder" ); // vykona pruchod postorder stromem tree.postordertraversal(); System.out.println();

57 Ověření na datech 57 Řada hodnot: 92, 73, 77, 16, 30, 30, 94, 89, 26, 80. Pak bude mít vytvořený binární strom podle uvedených programů následující strukturu:

58 Osnova 58 Vlkadane ciselne hodnoty: Pruchod preorder Pruchod inorder Pruchod postorder System.out.println ( "\n\npostorder traversal" ); tree.postorertraversal(); // perform postorder traversal of tree System.out.println(); // end main // end class TreeTest

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

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

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

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

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

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

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

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

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

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

17. Projekt Trojúhelníky

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

Více

Výčtový typ strana 67

Výčtový typ strana 67 Výčtový typ strana 67 8. Výčtový typ V této kapitole si ukážeme, jak implementovat v Javě statické seznamy konstant (hodnot). Příkladem mohou být dny v týdnu, měsíce v roce, planety obíhající kolem slunce

Více

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

Proměnné a datové typy

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

Více

Datové abstrakce v programovacích jazycích

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

Více

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

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

Více

Z. Kotala, P. Toman: Java ( Obsah )

Z. Kotala, P. Toman: Java ( Obsah ) Z. Kotala, P. Toman: Java ( Obsah ) 13. Výjimky Výjimka (exception) je definována jako událost, která nastane během provádění programu a která naruší normální běh instrukcí. Výjimka je vyvolána například

Více

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

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

Více

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

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

Více

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

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

Více

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

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

Více

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

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

Více

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

7 Formátovaný výstup, třídy, objekty, pole, chyby v programech 7 Formátovaný výstup, třídy, objekty, pole, chyby v programech Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost formátovanému výstupu,

Více

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

1. Programování proti rozhraní

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

Více

19. Projekt Adventura

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

Více

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

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

Více

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

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

Více

Datové typy strana 29

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

Více

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

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

Více

Používáme pole a kolekce

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

Více

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

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

Více

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

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

Více

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

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

Více

Datové struktury strana 81

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

Více

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

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

Více

7.5 Diagram tříd pokročilé techniky

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

Více

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

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

Více

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

Projekt Obrázek strana 135

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

Více

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

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

Více

Ošetřování chyb v programech

Ošetřování chyb v programech Ošetřování chyb v programech Úvod chyba v programu = normální záležitost typy chyb: 1) programátorská chyba při návrhu každých 10 000 řádek 1 chyba lze jen omezeně ošetřit (před pádem aplikace nabídnout

Více

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

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

Více

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

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

Více

RDF API a SPARQL syntaxe, API, příklady. 4IZ440 Reprezentace a zpracování znalostí na WWW Josef Petrák me@jspetrak.name

RDF API a SPARQL syntaxe, API, příklady. 4IZ440 Reprezentace a zpracování znalostí na WWW Josef Petrák me@jspetrak.name RDF API a SPARQL syntaxe, API, příklady 4IZ440 Reprezentace a zpracování znalostí na WWW Josef Petrák me@jspetrak.name Dnes uvidíme Syntaxe RDF Základy RDF grafu Pojmenované grafy Přehled RDF API Příklady

Více

Práce se soubory v Javě

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

Více

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

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

Více

Syntaxe vyjímek. #include <iostream> #include <string> using namespace std; // Trida vyjimek class Vyjimka { private:

Syntaxe vyjímek. #include <iostream> #include <string> using namespace std; // Trida vyjimek class Vyjimka { private: Vyjímky. Pod pojmem výjimka se rozumí nějaká výjimečná situace, která nastane v dané funkci. V jazyce C i C++ se často používá návratových hodnot funkcí, které vracejí úspěšnost provádění nějaké operace

Více

Datové typy a struktury

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

Více

TÉMATICKÝ OKRUH TZD, DIS a TIS

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

Více

InputStream. FilterInputStream

InputStream. FilterInputStream 6. Vstupy a výstupy Pro práci se vstupy a výstupy nám Java poskytuje celou řadu tříd a jejich metod. Jsou uloženy v balíku java.io. Tato knihovna je založena na mechanizmu tzv. vstupních a výstupních proudů

Více

Aplikovaná informatika. Podklady předmětu Aplikovaná informatika pro akademický rok 2006/2007 Radim Farana. Obsah. Obsah předmětu

Aplikovaná informatika. Podklady předmětu Aplikovaná informatika pro akademický rok 2006/2007 Radim Farana. Obsah. Obsah předmětu 1 Podklady předmětu pro akademický rok 2006/2007 Radim Farana Obsah 2 Obsah předmětu, Požadavky kreditového systému, Datové typy jednoduché, složené, Programové struktury, Předávání dat. Obsah předmětu

Více

Testování. Zadání příkladu. Vytvoření kostry třídy. Obsah:

Testování. Zadání příkladu. Vytvoření kostry třídy. Obsah: Obsah: Testování... 1 Zadání příkladu... 1 Vytvoření kostry třídy... 1 Napsání testů... 2 Testy správnosti... 3 Testy výjimek... 3 Testy vztahů/závislostí... 4 Zdrojový text testu... 4 Spuštění testů...

Více

1. Téma 03 - Rozhodování

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

Více

24-2-2 PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: 23.7.2013 KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

24-2-2 PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: 23.7.2013 KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1 24-2-2 PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE AUTOR DOKUMENTU: MGR. MARTINA SUKOVÁ DATUM VYTVOŘENÍ: 23.7.2013 KLÍČOVÁ AKTIVITA: 02 UČIVO: STUDIJNÍ OBOR: PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) INFORMAČNÍ TECHNOLOGIE

Více

7.3 Diagramy tříd - základy

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

Více

Čísla a číselné soustavy.

Čísla a číselné soustavy. Čísla a číselné soustavy. Polyadické soustavy. Převody mezi soustavami. Reprezentace čísel. Tomáš Bayer bayertom@natur.cuni.cz Katedra aplikované geoinformatiky a kartografie, Přírodovědecká fakulta UK.

Více

Sada úkolů pro předmět DSA

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

Více

Datové struktury a datové typy.

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

Více

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

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

Více

Maturitní témata Školní rok: 2015/2016

Maturitní témata Školní rok: 2015/2016 Maturitní témata Školní rok: 2015/2016 Ředitel školy: Předmětová komise: Předseda předmětové komise: Předmět: PhDr. Karel Goš Informatika a výpočetní technika Mgr. Ivan Studnička Informatika a výpočetní

Více

Základy PHP. Úvod do jazyka PHP a principů skriptování na straně serveru

Základy PHP. Úvod do jazyka PHP a principů skriptování na straně serveru Základy PHP Úvod do jazyka PHP a principů skriptování na straně serveru Princip fungování web serveru Server se podívá do svého datového úložiště Hypertext Transfer Protocol Internet Internet Nalezne požadovaný

Více

MS Excel 2010. Základy maker. Operační program Vzdělávání pro konkurenceschopnost. Projekt Zvyšování IT gramotnosti zaměstnanců vybraných fakult MU

MS Excel 2010. Základy maker. Operační program Vzdělávání pro konkurenceschopnost. Projekt Zvyšování IT gramotnosti zaměstnanců vybraných fakult MU MS Excel 2010 Základy maker Operační program Vzdělávání pro konkurenceschopnost Projekt Zvyšování IT gramotnosti zaměstnanců vybraných fakult MU Registrační číslo: CZ.1.07/2.2.00/15.0224, Oblast podpory:

Více

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

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

Více

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

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

Více

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

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

Více

Design time - vytváří se program - metadata - vytváří se např. třída. Run time - běh programu - ukládá se do paměti počítače - vytváří se např.

Design time - vytváří se program - metadata - vytváří se např. třída. Run time - běh programu - ukládá se do paměti počítače - vytváří se např. Design time - vytváří se program - metadata - vytváří se např. třída Run time - běh programu - ukládá se do paměti počítače - vytváří se např. objekt rysy javy - zavedení jasného pořádku a etikety - přísné

Více

APNVZ_7. Builder konstrukční návrhový vzor Broker distribuované systémy

APNVZ_7. Builder konstrukční návrhový vzor Broker distribuované systémy APNVZ_7 Builder konstrukční návrhový vzor Broker distribuované systémy 1 Konstrukční návrhové vzory Pro tvorbu nových objektů se obyčejně v Javě používají konstruktory. Konstruktory jsou užitečné pokud

Více

Semestrální práce z DAS2 a WWW

Semestrální práce z DAS2 a WWW Univerzita Pardubice Fakulta elektrotechniky a informatiky Semestrální práce z DAS2 a WWW Databázová část Matěj Trakal 8.12.2009 Kapitola 1: Obsah KAPITOLA 1: OBSAH 2 KAPITOLA 2: ZÁKLADNÍ CHARAKTERISTIKA

Více

Skriptovací jazyky. Obsah

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

Více

Abstraktní datové typy Objektový přístup v Oracle

Abstraktní datové typy Objektový přístup v Oracle Text pro samostudium náhrada za přednášku a cvičení 6.4.2009 Abstraktní datové typy Objektový přístup v Oracle Motivace Objektový přístup v Oracle je především umožněn díky uživatelem definovaným (abstraktním)

Více

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

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

Více

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

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

Více

Pro kontrolu správného formátu hodnoty N použijeme metodu try-catch.

Pro kontrolu správného formátu hodnoty N použijeme metodu try-catch. 1. ŘEŠENÉ PŘÍKLADY 1.2 PŘÍKLAD 24-2-8-2_DOKONALÉ ČÍSLO Napište program, který má na vstupu přirozené číslo N > 1. Výstupem je informace o tom, zda toto číslo je/není dokonalé. (Dokonalé číslo je takové

Více

Databázové a informační systémy Jana Šarmanová

Databázové a informační systémy Jana Šarmanová Databázové a informační systémy Jana Šarmanová Obsah Úloha evidence údajů, způsoby evidování Databázové technologie datové modely, dotazovací jazyky. Informační systémy Datové sklady Metody analýzy dat

Více

Jazyk C++ II. Šablony a implementace

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

Více

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

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

Více

2 Strukturované datové typy 2 2.1 Pole... 2 2.2 Záznam... 3 2.3 Množina... 4

2 Strukturované datové typy 2 2.1 Pole... 2 2.2 Záznam... 3 2.3 Množina... 4 Obsah Obsah 1 Jednoduché datové typy 1 2 Strukturované datové typy 2 2.1 Pole.................................. 2 2.2 Záznam................................ 3 2.3 Množina................................

Více

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

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

Více

Abstraktní datové typy

Abstraktní datové typy Datové struktury a algoritmy Část 4 Abstraktní datové typy Petr Felkel Data structures and algorithms Part 4 Abstract data types Petr Felkel Abstraktní datové typy Zdůrazňují vnější chování datové struktury

Více

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

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

Více

Prezentace a vysvětlení programového prostředí NXC

Prezentace a vysvětlení programového prostředí NXC Úvod Další jazyk, který je možno použít pro programování NXT kostky je NXC Not exatly C Na rozdíl od jazyku NXT-G, kde jsme vytvářeli program pomocí grafických prvků přesněji řečeno pomocí programovacích

Více

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

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

Více

Úvod Informace o prostředí Práce se soubory Regulární výrazy Konec. Programování v C# Soubory a regulární výrazy. Petr Vaněček 1 / 27

Úvod Informace o prostředí Práce se soubory Regulární výrazy Konec. Programování v C# Soubory a regulární výrazy. Petr Vaněček 1 / 27 Programování v C# Soubory a regulární výrazy Petr Vaněček 1 / 27 Obsah přednášky Informace o prostředí Práce se soubory Regulární výrazy 2 / 27 Zprostředkování informací Třída System.Environment Poskytuje

Více

STŘEDOŠKOLSKÁ ODBORNÁ ČINNOST

STŘEDOŠKOLSKÁ ODBORNÁ ČINNOST STŘEDOŠKOLSKÁ ODBORNÁ ČINNOST VÝUKOVÝ SOFTWARE KIRCHHOFFOVY ZÁKONY Jakub Hrnčíř Liberec 2011 STŘEDOŠKOLSKÁ ODBORNÁ ČINNOST Obor SOČ: 12. Tvorba učebních pomůcek, didaktická technologie VÝUKOVÝ SOFTWARE

Více

Profilová část maturitní zkoušky 2013/2014

Profilová část maturitní zkoušky 2013/2014 Střední průmyslová škola, Přerov, Havlíčkova 2 751 52 Přerov Profilová část maturitní zkoušky 2013/2014 TEMATICKÉ OKRUHY A HODNOTÍCÍ KRITÉRIA Studijní obor: 78-42-M/01 Technické lyceum Předmět: TECHNIKA

Více

Seznámení s datovými typy a operátory

Seznámení s datovými typy a operátory Knihovny tříd Javy KAPITOLA 2 Seznámení s datovými typy a operátory Klíčové dovednosti a pojmy Seznámení s primitivními typy jazyka Java. Používání literálů. Inicializace proměnných. Seznámení s pravidly

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

Groovy agilní Java. Pavel Kříž Filip Malý

Groovy agilní Java. Pavel Kříž Filip Malý Groovy agilní Java Pavel Kříž Filip Malý Úvod Dynamický skriptovací jazyk pod JVM Navržen pro platformu Java, zcela interoperabilní (na úrovni bajtkódu) s běžnými programy v Javě, silně objektově orientovaný

Více

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

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

Více

4 Datové struktury. Datové struktury. Zobrazení dat v počítači

4 Datové struktury. Datové struktury. Zobrazení dat v počítači 4 Datové struktury Zobrazení dat v počítači Každá hodnota v paměti počítače je zakódovaná do posloupnosti bitů. Využívá se přitom dvojková (binární) soustava, která používá dva znaky, 1 (nebo I ) a 0,

Více

2 Datové typy v jazyce C

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

Více

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

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

Více

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

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

Více

10 Balíčky, grafické znázornění tříd, základy zapozdření

10 Balíčky, grafické znázornění tříd, základy zapozdření 10 Balíčky, grafické znázornění tříd, základy zapozdření Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost příkazům balíčkům, grafickému

Více

Zásobník (LIFO) Opakem zásobníku LIFO je fronta FIFO (First In, First Out první dovnitř, první ven)

Zásobník (LIFO) Opakem zásobníku LIFO je fronta FIFO (First In, First Out první dovnitř, první ven) Zásobník (LIFO) Je dynamická datová struktura s těmito dovolenými operacemi: CREATE(S) - vytvoří prázdný zásobník S, TOP(S) - vrátí prvek na vrchu zásobníku S, POP(S) - vyhodí prvek na vrchu zásobníku

Více

Pokročilé programování v jazyce C pro chemiky (C3220) Dědičnost tříd v C++

Pokročilé programování v jazyce C pro chemiky (C3220) Dědičnost tříd v C++ Pokročilé programování v jazyce C pro chemiky (C3220) Dědičnost tříd v C++ Dědičnost tříd Dědičnost umožňuje vytvářet nové třídy z tříd existujících tak, že odvozené třídy (tzv. potomci) dědí vlastnosti

Více

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

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

Více