Java Virtual Mchine. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

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

Download "Java Virtual Mchine. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti"

Transkript

1 Java Virtual Mchine Aplikační programování v Javě (BI-APJ) - 3 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

2 Motivace Struktura kompilátoru: přední část (foreground) - kontrola syntaxe a sémantiky, optimalizace, překlad do vnitřní formy, vnitřní forma (intermediate language) - typicky formát "programu" pro abstraktní (virtuální) počítač se zásobníkovou architekturou, zadní část (background, generátor kódu) - překlad z vnitřní formy do strojového kódu procesoru. Vnitřní forma může být také "naivně" přímo interpretována: nevýhoda - řádové zpomalení, oproti generovanému kódu (na interpretaci každé instrukce je potřeba zavolat metodu), výhoda - interpret je mnohem jednodušší než generátor kódu a může být společný pro různé platformy. Vnitřní formy obvykle nebývají standardizovány, ale každý kompilátor definuje svou vlastní => větší nároky na vývoj

3 JVM JVM - Java Virtual Machine: specifikace popisující architekturu virtuálního počítače, jehož "strojový kód" je tvořen bytekódem, vlastní program provádějící interpretaci bytekódu (java). Implementace JVM: HotSpot, KVM (Sun), JRockit (Oracle), J9 (IBM),... JVM obsahuje (resp. definuje): paměťové prostory virtuálního počítače, formát a význam instrukcí bytecódu formát souborů.class Literatura: Java SE specifications

4 Společné paměťové prostory JVM Společné pro celou JVM: Heap - prostor pro alokaci instancí tříd a polí. Velikost je možno nastavit parametrem (-Xms, -Xmn). Vyčerpání: OutOfMemoryError Oblast metod (Method area) - obsahuje data specifická pro třídy: kód metod, konstanty, atp. Obdoba kódového segmentu v klasických (kompilovaných) systémech. Součástí oblasti metod je: Blok konstant (Runtime constant pool) - je vytvořen pro každou třídu (resp. rozhraní). Je kombinace tabulky konstant a tabulky symbolů v klasických systémech. Skládá se ze jednolivých položek (entry) označených indexy. Položky jsou: 1. hodnoty konstant (String, double,...) 2. symbolické reference na třídy, položky a metody

5 Paměťové prostory pro thread PC register - obsahuje adresu právě vykonávané instrukce, JVM stack (pevné velikosti nebo expandující) - obsahuje rámy aktivních metod. JVM stack nemusí být souvislý a rámy mohou být alokovány na heapu. (StackOverflowError, OutOfMemoryError). Native method stack (C-stack) - slouží pro práci nativních metod.

6 Rám Rám je vytvořen v okamžiku, kdy je metoda zavolaná a zrušen v okamžiku jejího dokončení. Rám obsahuje: pole lokálních proměnných, zásobník operandů, referenci na constant pool třídy metody, Pole lokálních proměnných je tvořeno 32bitovými položkami (long a double obsazují dvě položky). Proměnné jsou identifikovány indexy. Argumenty (skutečné parametry) jsou uloženy v lokálních proměnných indexu 0 až N Zásobník operandů slouží k výpočtu výrazů. Instrukce bytekódu pracují nad zásobníkem operandů. Operand na zásobníku může být libovolného typu (včetně long a double) Velikost pole lokálních proměnných i velikost zásobníku operandů jsou určené při překladu. Rám právě prováděné (aktuální) metody se nazývá aktuální.

7 Příklad rámu Pro následující metodu: long m(long x) { int y = 4; return x + y; } která byla zavolána s parametrem -1, má rám před dokončením metody tvar:

8 Bytekód Instrukce bytekódu se skládá z jednobytového operačního kódu a eventuálních operandů. Většina instrukcí je typovaná - obsahuje identifikaci typu začátečním písmenem operačního kódu: b-byte, s-short, c- char, i - int, l - long, f - float, d - double, a - reference Omezený počet instrukcí nemožňuje ortogonální řešení (tj. každý typ s každou instrukcí). Vzhledem k celočíselnému povýšení existují pro typ byte a short pouze instrukce: uložení konstany na zásobník: bipush, sipush čtení a uložení hodnoty do prvku pole: baload, saload konverzní instrukce

9 Typy instrukcí Instrukce load, store - přesouvají hodnoty mezi operandovým zásobníkem a lokálními proměnnými (parametry), Instrukce push, ldc, const - ukládají konstantu na zásobník, Aritmetické instrukce Relační instrukce Konverzní instrukce Vytváření objektů, Přístup k položkám Práce s polem Podmíněné skoky Další řídící instrukce Instrukce volání metod

10 Parametry instrukcí V následujícím popisu jsou pro parametry instrukcí použity tyto zkratky: uind1-1-bytový bezznaménkový index lokální proměnné, ucp1, ucpi2-1 resp. 2-bytový bezznaménkový index do oblasti konstant (pole constant-pool), typ1-1-bytový parametr udávající primitivní typ, udim1-1-bytový bezznaménkový počet dimenzí pole, sconst1, sconst2-1 resp. 2-bytová konstanta se znaménkem, soffset2, soffset4-2 resp. 4-bytový offset se znaménkem mezi adresou aktuální a cílové instrukce.

11 Instrukce load iload uind1, lload uind1 fload uind1, dload uind1, aload uind1 - instrukce přesune operand z lokální proměnné určené parametrem uind1 na zásobník:... =>..., value iload_n, lload_n, fload_n, dload_n, aload_n - instrukce přesune operand z lokální proměnné indexu n (0 až 3) na zásobník:... =>..., value

12 Instrukce store istore uind1, lstore uind1 fstore uind1, dstore uind1, astore uind1 - instrukce přesune operand ze zásobníku do lokální proměnné určené parametrem uind8:..., value =>... istore_n, lstore_n, fstore_n, dstore_n, astore_n - instrukce přesune operand ze zásobníku do lokální proměnné indexu n (n je 0 až 3):..., value =>...

13 Instrukce push a ldc bipush sconst1 - instrukce rozšíří (sign extends) svůj parametr typu byte a uloží jej na zásobník:... =>..., value sipush sconst2 - instrukce rozšíří (sign extends) svůj parametr typu short a uloží jej na zásobník:... =>..., value ldc ucpi1, ldc_w ucpi2 - instrukce uloží na zásobník konstantu z konstant-poolu:... =>..., value ldc2_w ucpi2 - instrukce uloží na zásobník konstantu double nebo long z konstant-poolu:... =>..., value

14 Instrukce const aconst_null - uloží na zásobník hodnotu null:... =>..., null iconst_m1 - uloží na zásobník hodnotu -1 typu int:... =>..., -1 iconst_0,..., iconst_5 - uloží na zásobník hodnotu 0, 1, 2, 3, 4 resp. 5 typu int:... =>..., value lconst_0, lconst_1 - uloží na zásobník hodnotu 0L resp. 1L typu long:... =>..., value fconst_0, fconst_1, fconst_2 - instrukce uloží na zásobník hodnotu 0.0f, 1.0f resp., 2.0f typu float:... =>..., value dconst_0, dconst_1 - uloží hodnotu typu double:... =>..., value

15 Aritmetické instrukce Instrukce (nemají operandy) provedou operaci mezi operandy na vrcholu operandového zásobníku a výsledek vrátí na zásobník: iadd, ladd, fadd, dadd isub, lsub, fsub, dsub imul, lmul, fmul, dmul idiv, ldiv, fdiv, ddiv irem, lrem, frem, drem ineg, lneg, fneg, dneg ishl, ishr, iushr, lshl, lshr, lushr ior, lor iand, land ixor, lxor

16 Relační instrukce dcmpg, dcmpl - uloží na zásobník výsledek porovnání dvou operandů typu double (-1, 0, 1):..., value1, value2 =>..., result fcmpg, fcmpl - uloží na zásobník výsledek porovnání dvou operandů typu float (-1, 0, 1):..., value1, value2 =>..., result, lcmp - uloží na zásobník výsledek porovnání dvou operandů typu long (-1, 0, 1):..., value1, value2 =>..., result

17 Konverzní instrukce i2l, i2f, i2d, l2f, l2d, f2d - instrukce provádějící rozšiřující konverzi:..., value =>..., result i2b, i2c, i2s, l2i, f2i, f2l, d2i, d2l, d2f - instrukce provádějící zužující konverzi:..., value =>..., result

18 Manipulace se zásobníkem pop - odstranění operandu ze zásobníku:..., value =>... pop2 - odstranění operandu typu long nebo double ze zásobníku:..., value =>... dup, dup2, dup_x1, dup2_x1, dup_x2, dup2_x2 - duplikování operandu na zásobníku swap - prohození operandů na zásobníku:..., value1, value2 =>..., value2, value1

19 Vytváření objektů new ucpi2 - vytvoření instance třídy dané parametrem ucpi2:... =>..., objectref newarray typ1 - vytvoření pole prvků primitivních typu určeného parametrem typ1:..., count =>..., arrayref anewarray ucpi2 - vytvoření pole referencí na typ daný parametrem ucpi2:..., count =>..., arrayref multianewarray ucpi2, udim1 - vytvoření vícerozměrného pole:..., count1, count2,... =>..., arrayref

20 Přístup k položkám getstatic ucpi2 - přesun hodnoty třídní proměnné určené parametrem ucpi2 na zásobník:..., =>..., value putstatic ucpi2 - přesun hodnoty ze zásobníku do třídní proměnné určené parametrem ucpi2:..., value =>..., getstatic ucpi2 - přesun hodnoty třídní proměnné určené parametrem ucpi2 na zásobník:..., =>..., value putstatic ucpi2 - přesun hodnoty ze zásobníku do třídní proměnné určené parametrem ucpi2:..., value =>...,

21 Práce s polem baload, caload, saload, iaload, laload, faload, daload, aaload - přesun hodnoty prvku pole na zásobník:..., arayref, index =>..., value bastore, castore, sastore, iastore, lastore, fastore, dastore, aastore - uložení hodnoty ze zásobníku do prvku pole :..., arayref, index, value =>..., arraylength - délka pole:..., arayref =>..., length

22 Ostatní instrukce iinc uind1, sconst1 - instrukce přičte hodnotu parametru sconst1 k lokální proměnné o indexu uind1. instanceof, checkcast

23 Podmíněné skoky ifeq soffset2, ifne soffset2, iflt soffset2, ifle soffset2, ifgt soffset2, ifge soffset2 - podmíněné skoky podle relace hodnoty na vrcholu zásobníku s 0:..., value =>... ifnull soffset2, ifnonnull soffset2 - podmíněné skoky podle hodnoty reference na vrcholu zásobníku:..., value =>... if_icmpeq soffset2, if_icmpne soffset2, if_icmplt soffset2, if_icmpgt soffset2, if_icmple soffset2, if_icmpge soffset2, if_acmpeq soffset2, if_acmpne soffset2 - podmíněné skoky podle relace mezi dvěma operandy typu int na vrcholu zásobníku:..., value1, value2 =>...

24 Další řídící instrukce tableswitch... - skok v příkazu switch podle indexu:..., index =>... lookupswitch... - skok v příkazu switch podle klíče:..., key =>... goto soffset2, goto_w soffset4 - nepodmíněný skok o offset soffset2 resp. soffset4, jsr soffset2, jsr_w soffset4 - skok do klauzule finally o offset soffset2 resp. soffset4, ret uind1 - návrat z klauzule finally athrow - vržení výjimky, jejíž reference je uložena na vrcholu zásobníku:..., objectref =>..., objectref

25 Volání metod invokevirtual ucpi2 - volání instanční metody určené parametrem ucpi2: objectref, arg1, arg2,..., argn =>... invokeinterface ucpi2 - volání metody rozhraní určené parametrem ucpi2: objectref, arg1, arg2,..., argn =>... invokespecial ucpi2 - volání privátní metody resp. konstruktoru určené parametrem ucpi2: objectref, arg1, arg2,..., argn =>... invokestatic ucpi2 - volání třídní metody určené parametrem ucpi2: arg1, arg2,..., argn =>...

26 Formát class souboru Class soubory (classfile) jsou binární soubory s proměnnou délkou vět. Formát je popsán modifikovaným zápisem struktur jazyka C, které obsahují "pole" položek proměnné délky. Prvky těchto "polí" jsou referencovány "indexy" (tj. pořadovým číslem v rámci pole). Index se používá k identifikaci položky (viz např. parametry instrukcí bytekódu ucpi2) Kořenová struktura ClassFile obsahuje pole: constant_pool - pole symbolů a konstamt interfaces - pole implemetovaných interfaců fields methods attributes

27 Formát class souboru ClassFile { u4 magic; u2 minor_version; u2 major_version; u2 constant_pool_count; cp_info constant_pool[constant_pool_count-1]; u2 access_flags; u2 this_class; u2 super_class; u2 interfaces_count; u2 interfaces[interfaces_count]; u2 fields_count; field_info fields[fields_count]; u2 methods_count; method_info methods[methods_count]; u2 attributes_count; attribute_info attributes[attributes_count]; }

28 Pole constant-pool Pole constant-pool obsahuje struktury, které reprezentují: symbolické reference na třídy: CONSTANT_Class_info symbolické reference na položky: CONSTANT_Fieldref_info, symbolické reference na metody: CONSTANT_Methodref_info, CONSTANT_InterfaceMethodref_info literály: CONSTANT_String_info, CONSTANT_Integer_info, CONSTANT_Float_info, CONSTANT_Long_info, CONSTANT_Double_info pomocné struktury: CONSTANT_NameAndType_info, CONSTANT_Utf8_info

29 Struktury symbolických referencí Struktury popisují symbolické odkazy na položky a metody. Indexy na tyto struktury se používají např v instrukcích putfield, getfield atd. CONSTANT_Fieldref_info { u1 tag; ucpi2 class_index; ucpi2 name_and_type_index; } CONSTANT_Methodref_info { u1 tag; ucpi2 class_index; ucpi2 name_and_type_index; } CONSTANT_InterfaceMethodref_info { u1 tag; ucpi2 class_index; ucpi2 name_and_type_index; }

30 Struktury literálů Struktury CONSTANT_String_info, CONSTANT_Integer_info, CONSTANT_Float_info, CONSTANT_Long_info, CONSTANT_Double_info reprezentují literály: CONSTANT_String_info { u1 tag; ucpi2 string_index; } CONSTANT_Integer_info { u1 tag; u4 bytes; }... CONSTANT_Double_info { u1 tag; u4 high_bytes; u4 low_bytes; }

31 Pomocné struktury Struktura CONSTANT_NameAndType_info reprezentuje jméno a typ položky nebo metody: CONSTANT_NameAndType_info { u1 tag; ucpi2 name_index; ucpi2 descriptor_index; } Struktura CONSTANT_Utf8_info reprezentuje posloupnost znaků utf8: CONSTANT_Utf8_info { u1 tag; u2 length; u1 bytes[length]; }

32 Pole fields Pole fields obsahuje struktury field_info, které reprezentují položky třídy: field_info { u2 access_flags; ucpi2 name_index; ucpi2 descriptor_index; u2 attributes_count; attribute_info attributes[attributes_count]; }

33 Pole methods Pole methods obsahuje struktury method_info. Každá metoda (včetně inizializačních metod instancí a tříd) je popsána strukturou method_info: method_info { u2 access_flags; ucpi2 name_index; ucpi2 descriptor_index; u2 attributes_count; attribute_info attributes[attributes_count]; } Každá metoda, která není nativní nebo abstract má v poli attributes právě jeden atribut code obsahující vlastní kód metody.

34 Atribut code Atribut code obsahuje vlastní instrukce bytekódu (pole code), tabulku catch klauzulí (pole exception_table) a další informace o metodě: Code_attribute { ucpi2 attribute_name_index; u4 attribute_length; u2 max_stack; u2 max_locals; u4 code_length; u1 code[code_length]; u2 exception_table_length; { u2 start_pc; u2 end_pc; u2 handler_pc; u2 catch_type; } exception_table[exception_table_length]; u2 attributes_count; attribute_info attributes[attributes_count]; }

35 Reprezentuje typ proměnné: FieldDescriptor: FieldType ComponentType: FieldType FieldType: BaseType ObjectType Deskriptor položky ArrayType BaseType: B C D F I J (long) S Z (boolean) ObjectType: L <classname> ; ArrayType: [ ComponentType Příklad deskriptrů: proměnná typu Object: Ljava/lang/Object; proměnná typu double[][][]: [[[D

36 Deskriptor metody Deskriptor metody reprezentuje parametery a návratovou hodnotu metody: MethodDescriptor: ( ParameterDescriptor* ) ReturnDescriptor ParameterDescriptor: FieldType ReturnDescriptor: FieldType V Příklad: Object mymethod(int i, double d, Thread t) deskriptor: (IDLjava/lang/Thread;)Ljava/lang/Object;

37 Vykonání programu Vykonání programu se skládá z následujících kroků: Start JVM Zpracování tříd: Zavádění (loading) a vytváření tříd Linkování: verifikace, rezoluce, příprava Inicializace Exit JVM

38 Zavádění a vytváření tříd Vytváření třídy spočívá ve vytvoření její vnitřní reprezentace v oblasti metod a to v implementačně definovaném formátu. Před vytvořením musí být třída zavedena (load) pověřeným zavaděčem (class loader). Vytváření nějaké třídy C je vyvoláno: 1. uvedením C jako hlavní třídy při spuštění JVM, 2. jinou třídou (resp. rozhraním), která referencuje C ve své tabulce konstant, 3. explicitně pomocí reflexe, např: Class.forName(...). Třídy, které nejsou pole jsou vytvářeny ze své binární reprezentace v.class souborech. Třídy pole jsou vytvářeny přímo JVM.

39 Verifikace tříd Verifikace tříd probíhá v několika fázích: 1. fáze - základní verifikace: kontrola magického čísla, kontrola délek atributů, atd. 2. fáze - strukturální verifikace třída final nemá podtřídu každá třída má nadtřídu constant-pool je konzistetní validnost symbolických referencí, atd. 3. fáze - verifikace bytekódu: zásobník operandů má vždy stejný tvar pro libovolný průchod programem, lokální proměnné jsou před použitím definované, metody jsou volány s odpovídajícími argumenty, položkám jsou přiřazovány odpovídající typy hodnot, atd.

40 Rezoluce Rezoluce je proces určení konkrétních konstrukcí za symbolické odkazy v tabulce konstant. Rezolovat se musí odkazy na: 1. třídy - rezoluce znamená vytvoření třídy. Možná chyba: IllegalAccessError, 2. položky - nejprve musí proběhnout rezoluce třídy položky. Možné chyby: NoSuchFieldError, IllegalAccessError, 3. metody - nejprve musí proběhnout rezoluce třídy metody. Možné chyby: NoSuchMethodError, IllegalAccessError, AbstractMethodError Rezoluce může být provedena při linkování třídy (eager) a nebo může být odložena až na dobu, kdy se vykonává instrukce, která odkaz používá (lazy). Symbolické odkazy používají např. instrukce: new (na třídu), g (na položku), invokestatic (na třídu a metodu), atd.

41 Inicializace Inicializace znamená vykonání statických inicalizátorů a inicalizátorů statických položek deklarovaných ve třídě (resp. rozhraní). Kód inicializace je uveden v systémové metodě <clinit>. Před provedením inicalizace se musí inicializovat nadtřída (avšak ne implemetované rozhraní). Inicializace třídy je vyvolána: inicializací podtřídy, vytvořením instance třídy, zavoláním statické metody, přístupem k nekonstantní statické položce. Pozn. přístup ke konstantní (final )položce nevyvolá inicalizaci, protože jej kompilátor nahradí hodnotou položky.

42 void spin() { int i; for (i = 0; i < 100; i++) { // Loop body is empty } } Překlad do bytekódu Method void spin() 0 iconst_0 // push int konstantu 0 1 istore_1 // ulož do lokální proměnné 1 (i=0) 2 goto 8 // skok na konec cyklu 5 iinc 1 1 // inkrementace lokální proměnné 1 8 iload_1 // push lokální proměnné 1 (i) 9 bipush 100 // push int konstantu if_icmplt 5 // porovnání a skok na začátek cyklu // je-li menší 14 return // návrat

43 int align2grain(int i, int grain) { return ((i + grain-1) & ~(grain-1)); } Method int align2grain(int,int) 0 iload_1 1 iload_2 2 iadd 3 iconst_1 4 isub 5 iload_2 6 iconst_1 7 isub 8 iconst_m1 9 ixor 10 iand 11 ireturn Aritmetika

44 Volání metod int add12and13() { return addtwo(12, 13); } Method int add12and13() 0 aload_0 // push lokální proměnou 0 (this) 1 bipush 12 // push int konstanta 12 3 bipush 13 // push int konstanta 13 5 invokevirtual #4 // volání addtwo 8 ireturn // vrácení hodnoty z vrcholu // operandového zásobníku

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA INFORMAČNÍCH TECHNOLOGIÍ ÚSTAV INFORMAČNÍCH SYSTÉMŮ FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF INFORMATION SYSTEMS ZPĚTNÝ PŘEKLADAČ

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

PROGRAMOVACÍ JAZYKY A PŘEKLADAČE PŘEKLADY TYPICKÝCH JAZYKOVÝCH KONSTRUKCÍ PROGRAMOVACÍCH JAZYKŮ.

PROGRAMOVACÍ JAZYKY A PŘEKLADAČE PŘEKLADY TYPICKÝCH JAZYKOVÝCH KONSTRUKCÍ PROGRAMOVACÍCH JAZYKŮ. PROGRAMOVACÍ JAZYKY A PŘEKLADAČE PŘEKLADY TYPICKÝCH JAZYKOVÝCH KONSTRUKCÍ PROGRAMOVACÍCH JAZYKŮ. 2011 Jan Janoušek BI-PJP Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Dva základní

Více

Generování vnitřní reprezentace programu

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

Více

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

Ú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

JAVA. Třídy a classloader

JAVA. Třídy a classloader JAVA Třídy a classloader Přehled třídy se do VM natahují dynamicky lze změnit odkud se natahují jak se natahují java.lang.classloader VM používá classloadery pro natahovaní tříd každá třída je natažena

Více

INTERPRETER BYTOVÉHO KÓDU JAVA

INTERPRETER BYTOVÉHO KÓDU JAVA VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA INFORMAČNÍCH TECHNOLOGIÍ ÚSTAV POČÍTAČOVÝCH SYSTÉMŮ FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF COMPUTER SYSTEMS INTERPRETER BYTOVÉHO

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

Ú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

JAVA. Třídy a classloader

JAVA. Třídy a classloader JAVA Třídy a classloader Přehled třídy se do VM natahují dynamicky lze změnit odkud se natahují jak se natahují java.lang.classloader VM používá classloadery pro natahovaní tříd každá třída je natažena

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

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

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

Předmluva k aktuálnímu vydání Úvod k prvnímu vydání z roku Typografické a syntaktické konvence... 20

Předmluva k aktuálnímu vydání Úvod k prvnímu vydání z roku Typografické a syntaktické konvence... 20 Obsah 5 Obsah Předmluva k aktuálnímu vydání 15 1 Úvod k prvnímu vydání z roku 2000 16 Typografické a syntaktické konvence................ 20 2 Základní pojmy 21 2.1 Trocha historie nikoho nezabije................

Více

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ 1) PROGRAM, ZDROJOVÝ KÓD, PŘEKLAD PROGRAMU 3 2) HISTORIE TVORBY PROGRAMŮ 3 3) SYNTAXE A SÉMANTIKA 3 4) SPECIFIKACE

Více

Ukazka knihy z internetoveho knihkupectvi www.kosmas.cz

Ukazka knihy z internetoveho knihkupectvi www.kosmas.cz Ukazka knihy z internetoveho knihkupectvi www.kosmas.cz Upozornění pro čtenáře a uživatele této knihy Všechna práva vyhrazena. Žádná část této tištěné či elektronické knihy nesmí být reprodukována a šířena

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

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

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

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

Více

Struktura programu v době běhu

Struktura programu v době běhu Struktura programu v době běhu Miroslav Beneš Dušan Kolář Struktura programu v době běhu Vztah mezi zdrojovým programem a činností přeloženého programu reprezentace dat správa paměti aktivace podprogramů

Více

DISASSEMBLER MEZIKÓDU JAZYKA JAVA

DISASSEMBLER MEZIKÓDU JAZYKA JAVA VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA INFORMAČNÍCH TECHNOLOGIÍ ÚSTAV INTELIGENTNÍCH SYSTÉMŮ FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF INTELLIGENT SYSTEMS DISASSEMBLER

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

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15 Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15 KAPITOLA 1 Úvod do programo vání v jazyce C++ 17 Základní pojmy 17 Proměnné a konstanty 18 Typy příkazů 18 IDE integrované vývojové

Více

Abstraktní třídy, polymorfní struktury

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

Více

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

IUJCE 07/08 Přednáška č. 6

IUJCE 07/08 Přednáška č. 6 Správa paměti Motivace a úvod v C (skoro vždy) ručně statické proměnné o datový typ, počet znám v době překladu o zabírají paměť po celou dobu běhu programu problém velikosti definovaných proměnných jak

Více

NetBeans platforma. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

NetBeans platforma. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti NetBeans platforma Aplikační programování v Javě (BI-APJ) - 7 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha Evropský sociální fond Praha & EU: Investujeme

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

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

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

Univerzita Karlova v Praze. Matematicko-fyzikální fakulta DIPLOMOVÁ PRÁCE. Bc. Tomáš Šafařík. Preprocesor Java bytecode pro verifikační nástroje

Univerzita Karlova v Praze. Matematicko-fyzikální fakulta DIPLOMOVÁ PRÁCE. Bc. Tomáš Šafařík. Preprocesor Java bytecode pro verifikační nástroje Univerzita Karlova v Praze Matematicko-fyzikální fakulta DIPLOMOVÁ PRÁCE Bc. Tomáš Šafařík Preprocesor Java bytecode pro verifikační nástroje Katedra distribuovaných a spolehlivých systémů Vedoucí diplomové

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

Reflexe. Aplikační programování v Javě (BI-APJ) - 8 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha

Reflexe. Aplikační programování v Javě (BI-APJ) - 8 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha Reflexe Aplikační programování v Javě (BI-APJ) - 8 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha Evropský sociální fond Praha & EU: Investujeme do vaší

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

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

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

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

Více

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

11. Přehled prog. jazyků

11. Přehled prog. jazyků Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 11 1 Základy algoritmizace 11. Přehled prog. jazyků doc. Ing. Jiří Vokřínek, Ph.D. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze

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

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

Obsah. Úvod 11 Základy programování 11 Objektový přístup 11 Procvičování 11 Zvláštní odstavce 12 Zpětná vazba od čtenářů 12 Errata 13

Obsah. Úvod 11 Základy programování 11 Objektový přístup 11 Procvičování 11 Zvláštní odstavce 12 Zpětná vazba od čtenářů 12 Errata 13 Úvod 11 Základy programování 11 Objektový přístup 11 Procvičování 11 Zvláštní odstavce 12 Zpětná vazba od čtenářů 12 Errata 13 KAPITOLA 1 Na úvod o Javě 15 Počítačový program 15 Vysokoúrovňový programovací

Více

Více o konstruktorech a destruktorech

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

Více

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

ISU Cvičení 7. Marta Čudová

ISU Cvičení 7. Marta Čudová ISU Cvičení 7 Marta Čudová Supercomputing Technologies Research Group Brno University of Technology, Faculty of Information Technology Božetěchova 1/2, 612 66 Brno - Královo Pole icudova@fit.vutbr.cz Osnova

Více

Algoritmizace a programování

Algoritmizace a programování Algoritmizace a programování Typy Základní (primitivní) datové typy Deklarace Verze pro akademický rok 2012/2013 1 Typy v jazyce Java Základní datové typy (primitivní datové typy) Celočíselné byte, short,

Více

PŘETĚŽOVÁNÍ OPERÁTORŮ

PŘETĚŽOVÁNÍ OPERÁTORŮ PŘETĚŽOVÁNÍ OPERÁTORŮ Jazyk C# podobně jako jazyk C++ umožňuje přetěžovat operátory, tj. rozšířit definice některých standardních operátorů na uživatelem definované typy (třídy a struktury). Stejně jako

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

Paralelní programování

Paralelní programování Paralelní programování přednášky Jan Outrata únor duben 2011 Jan Outrata (KI UP) Paralelní programování únor duben 2011 1 / 14 Atomické akce dále nedělitelná = neproložitelná jiným procesem izolovaná =

Více

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

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

Více

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

Ú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

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

Jazyk C# a platforma.net

Jazyk C# a platforma.net Jazyk C# a platforma.net Katedra softwarového inženýrství Fakulta informačních technologií České vysoké učení technické v Praze Pavel Štěpán, 2011 Syntaxe jazyka C# - 1. část BI-DNP Evropský sociální fond

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

Opakování programování

Opakování programování Opakování programování HW návaznost - procesor sběrnice, instrukční sada, optimalizace rychlosti, datové typy, operace (matematické, logické, podmínky, skoky, podprogram ) - paměti a periferie - adresování

Více

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

PB161 Programování v jazyce C++ Přednáška 4 PB161 Programování v jazyce C++ Přednáška 4 Přetěžování funkcí Konstruktory a destruktory Nikola Beneš 9. října 2017 PB161 přednáška 4: přetěžování funkcí, konstruktory, destruktory 9. října 2017 1 / 20

Více

PREPROCESOR POKRAČOVÁNÍ

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

Více

Obsah přednášky. 12. Dokumentace zdrojového kódu Tvorba elektronické dokumentace UML. Co je diagram tříd. Ing. Ondřej Guth

Obsah přednášky. 12. Dokumentace zdrojového kódu Tvorba elektronické dokumentace UML. Co je diagram tříd. Ing. Ondřej Guth Evropský sociální fond. 12. Dokumentace zdrojového kódu Tvorba elektronické dokumentace Ing. Ondřej Guth Katedra teoretické informatiky Fakulta informačních technologií České vysoké učení technické v Praze

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

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

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

6. Příkazy a řídící struktury v Javě

6. Příkazy a řídící struktury v Javě 6. Příkazy a řídící struktury v Javě Příkazy v Javě Příkazy v Javě Řídicí příkazy (větvení, cykly) Přiřazovací příkaz = Řízení toku programu (větvení, cykly) Volání metody Návrat z metody - příkaz return

Více

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

Programování v C++ 1, 1. cvičení Programování v C++ 1, 1. cvičení opakování látky ze základů programování 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled 1 2 Shrnutí procvičených

Více

Odvozené a strukturované typy dat

Odvozené a strukturované typy dat Odvozené a strukturované typy dat Petr Šaloun katedra informatiky FEI VŠB-TU Ostrava 14. listopadu 2011 Petr Šaloun (katedra informatiky FEI VŠB-TU Ostrava) Odvozené a strukturované typy dat 14. listopadu

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

Správné vytvoření a otevření textového souboru pro čtení a zápis představuje

Správné vytvoření a otevření textového souboru pro čtení a zápis představuje f1(&pole[4]); funkci f1 předáváme hodnotu 4. prvku adresu 4. prvku adresu 5. prvku hodnotu 5. prvku symbolická konstanta pro konec souboru je eof EOF FEOF feof Správné vytvoření a otevření textového souboru

Více

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

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

Více

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

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí)

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí) Programovací jazyky Programovací jazyky nižší assembler (jazyk symbolických instrukcí) vyšší imperativní (procedurální) Pascal, C/C++, Java, Basic, Python, php neimperativní (neprocedurální) Lisp, Prolog

Více

Jazyk C++, některá rozšíření oproti C

Jazyk C++, některá rozšíření oproti C Karel Müller, Josef Vogel (ČVUT FIT) Jazyk C++, některá rozšíření oproti C BI-PA2, 2011, Přednáška 1 1/22 Jazyk C++, některá rozšíření oproti C Ing. Josef Vogel, CSc Katedra softwarového inženýrství 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

Mělká a hluboká kopie

Mělká a hluboká kopie Karel Müller, Josef Vogel (ČVUT FIT) Mělká a hluboká kopie BI-PA2, 2011, Přednáška 5 1/28 Mělká a hluboká kopie Ing. Josef Vogel, CSc Katedra softwarového inženýrství Katedra teoretické informatiky, Fakulta

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

Programovací jazyk Pascal

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

Více

Algoritmizace a programování

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

Více

Návrh zásobníkového procesoru pro vestavěné systémy a implementace podpůrných nástrojů

Návrh zásobníkového procesoru pro vestavěné systémy a implementace podpůrných nástrojů České vysoké učení technické v Praze Fakulta elektrotechnická Katedra řídicí techniky Návrh zásobníkového procesoru pro vestavěné systémy a implementace podpůrných nástrojů DIPLOMOVÁ PRÁCE Vypracoval:

Více

IRAE 07/08 Přednáška č. 1

IRAE 07/08 Přednáška č. 1 Úvod do předmětu OOP Objekt Proč OOP? Literatura, osnova předmětu viz. cvičení Základní prvek OOP sw inženýrství = model reálných objektů (věcí) člověk, auto, okno (ve windows), slovník, = model abstraktní

Více

Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií

Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií 1 Fakulta elektrotechniky a informatiky Katedra softwarových technologií 12. října 2009 Organizace výuky Přednášky Teoretické základy dle normy jazyka C Cvičení Praktické úlohy odpřednášené látky Prostřední

Více

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

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

Programování v C++ 3, 3. cvičení Programování v C++ 3, 3. cvičení úvod do objektově orientovaného programování 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled Dokončení spojového

Více

Seminář Java IV p.1/38

Seminář Java IV p.1/38 Seminář Java IV Seminář Java IV p.1/38 Rekapitulace Deklarace tříd Proměnné, metody, konstruktory, modifikátory přístupu Datové typy primitivní, objektové, pole Dědičnost Řídící konstrukce Podmínky, cykly

Více

Architektury VLIW M. Skrbek a I. Šimeček

Architektury VLIW M. Skrbek a I. Šimeček Architektury VLIW M. Skrbek a I. Šimeček xsimecek@fit.cvut.cz Katedra počítačových systémů FIT České vysoké učení technické v Praze Ivan Šimeček, 2011 MI-PAP, LS2010/11, Predn.3 Příprava studijního programu

Více

Výrazy, operace, příkazy

Výrazy, operace, příkazy Výrazy, operace, příkazy Karel Richta a kol. katedra počítačů FEL ČVUT v Praze Přednášky byly připraveny s pomocí materiálů, které vyrobili Ladislav Vágner, Pavel Strnad Karel Richta, Martin Hořeňovský,

Více

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

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

Více

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

Úvod z historie. Kompilátory. Kompilace / Kompilátor Compile / Compiler. Pojem kompilátoru. Úvod z historie

Úvod z historie. Kompilátory. Kompilace / Kompilátor Compile / Compiler. Pojem kompilátoru. Úvod z historie Úvod z historie RNDr. Miroslav Benedikovič John Louis von Neumann r. 1946 nová koncepce počítače (společná paměť pro kód programu a zpracovávaná data) vytvořila podmínky pro vznik softvéru na přípravu

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

Preprocesor. Karel Richta a kol. katedra počítačů FEL ČVUT v Praze. Karel Richta, Martin Hořeňovský, Aleš Hrabalík, 2016

Preprocesor. Karel Richta a kol. katedra počítačů FEL ČVUT v Praze. Karel Richta, Martin Hořeňovský, Aleš Hrabalík, 2016 Preprocesor Karel Richta a kol. katedra počítačů FEL ČVUT v Praze Karel Richta, Martin Hořeňovský, Aleš Hrabalík, 2016 Programování v C++, A7B36PJC 4/2016, Lekce 9b https://cw.fel.cvut.cz/wiki/courses/a7b36pjc/start

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

Programování v jazyce JavaScript

Programování v jazyce JavaScript Programování v jazyce JavaScript Katedra softwarového inženýrství Fakulta informačních technologií České vysoké učení technické v Praze Pavel Štěpán, 2011 Operátory a příkazy BI-JSC Evropský sociální fond

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

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

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

Jazyk C# (seminář 6)

Jazyk C# (seminář 6) Jazyk C# (seminář 6) Pavel Procházka KMI 29. října 2014 Delegát motivace Delegáty a události Jak docílit v C# funkcionální práce s metodami v C je to pomocí pointerů na funkce. Proč to v C# nejde pomocí

Více

Strojový kód. Instrukce počítače

Strojový kód. Instrukce počítače Strojový kód Strojový kód (Machine code) je program vyjádřený v počítači jako posloupnost instrukcí procesoru (posloupnost bajtů, resp. bitů). Z hlediska uživatele je strojový kód nesrozumitelný, z hlediska

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

Strojový kód k d a asembler procesoru MIPS SPIM. MIPS - prostředí NMS NMS. 32 ks 32bitových registrů ( adresa registru = 5 bitů).

Strojový kód k d a asembler procesoru MIPS SPIM. MIPS - prostředí NMS NMS. 32 ks 32bitových registrů ( adresa registru = 5 bitů). Strojový kód k d a asembler procesoru MIPS Použit ití simulátoru SPIM K.D. - cvičení ÚPA 1 MIPS - prostředí 32 ks 32bitových registrů ( adresa registru = 5 bitů). Registr $0 je zero čte se jako 0x0, zápis

Více