Java Virtual Mchine. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti
|
|
- Robert Sedlák
- před 5 lety
- Počet zobrazení:
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Ě 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íceTeoretické 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ícePROGRAMOVACÍ 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íceGenerová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íceMichal 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) 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íceJAVA. 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íceINTERPRETER 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íceAbstraktní 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) 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íceJAVA. 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íceMichal 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íceProgramová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íce8 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ícePočí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ícePř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íceMATURITNÍ 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íceUkazka 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 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íceZá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íceProgramová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íceStruktura 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íceDISASSEMBLER 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íceTabulka 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íceObsah. 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íceAbstraktní 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íce14.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íceIUJCE 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íceNetBeans 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íceProgramová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íceProgramová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íceClass 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íceUniverzita 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íceDatové 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íceReflexe. 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íceADT/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íceMichal 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íceZá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íceOperá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íceSeminář 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íce11. 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ícetypová 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íceDefinice 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íceObsah. Ú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íceVí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íce2) 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íceISU 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íceAlgoritmizace 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ícePŘ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íceAlgoritmizace 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íceParalelní 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ícePaměť 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íceMichal 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
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íceDatové 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íceJazyk 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íceZá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íceOpaková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ícePB161 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ícePREPROCESOR 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íceObsah 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íceKonstruktory 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íce7. 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íceMichal 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íce6. 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íceProgramová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íceOdvozené 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íceMichal 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íceSprá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íce5 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íce7 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íceProgramovací 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íceJazyk 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íceMichal 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íceMě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íceAbstraktní 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íceProgramovací 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íceAlgoritmizace 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íceNá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íceIRAE 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í
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íceDefinice 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íceProgramová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íceSeminář 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íceArchitektury 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íceVý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ícefor (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íceReprezentace 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 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íceKolekce, 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ícePreprocesor. 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íceVýč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íceProgramová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íceGenerické 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íceBridge. 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íceSprá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íceJazyk 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íceStrojový 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íce1. 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íceStrojový 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