Platforma.NET Wykład 2 Składowe platformy.net. Spis treści. Plan wykładu tydzień po tygodniu. Plan wykładu tydzień po tygodniu. Notatki.
|
|
- Patrycja Chmielewska
- 6 lat temu
- Przeglądów:
Transkrypt
1 Marek Sawerwain Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski Ostatnia kompilacja pliku: 22 marca 2018, t: 18:53 V1.1 1/ 47 Spis treści Wprowadzenie Plan wykładu Analiza składowych platformy.net Common Language Specification Common Type Systems (CTS) Przegląd języków programowania.net Analiza biblioteki klas Budowa podzespołu Język pośredni Kompilacja i wykonywanie programów IL Tabela instrukcji wybór Już za tydzień na wykładzie V1.1 2/ 47 Wprowadzenie Plan wykładu Plan wykładu tydzień po tygodniu (1) Informacje o wykładzie, pojęcie platformy, podstawowe informacje o platformie.net, (2) : CLR, CTS, języki programowania, biblioteki klas, pojęcie podzespołu (ang. assembly), (3) Programowanie w C# środowisko VS, MonoDevelop, syntaktyka C#, wyjątki, współpraca z DLL, (4) Programowanie w C# model obiektowy, typy uogólnione, lambda wyrażenia, (5) Programowanie w C# aplikacje okienkowe, programowanie wielowątkowe. (6) Programowanie w F# podstawy, przetwarzanie danych tekstowych, (7) "Klasówka I", czyli wstęp do egzaminu cześć pierwsza (8) Dostęp do baz danych V1.1 3/ 47 Wprowadzenie Plan wykładu Plan wykładu tydzień po tygodniu (9) Język zapytań LINQ (10) Obsługa standardu XML (11) Technologia ASP.NET (12) ASP.NET Model View Controller (13) Tworzenie usług sieciowych SOA i WCF (14) Bezpieczeństwo aplikacji.net (15) "Klasówka II", czyli wstęp do egzaminu cześć druga V1.1 4/ 47
2 Wprowadzenie Plan wykładu Plan wykładu 1. Elementy.NET 1.1 główne elementy.net, 1.2 reguły CLS, 1.3 system typów. 2. Biblioteka klas 2.1 podział typów, 2.2 typy wbudowane oraz typy w kontekście C#, 2.3 podstawowe klasy w przestrzeni System. 3. Podzespół (assembly)/język pośredni 3.1 rola podzespołu, 3.2 budowa i model, 3.3 język pośredni. V1.1 5/ 47 Analiza składowych platformy.net Elementy platformy.net Wspólne środowisko uruchomieniowe oraz biblioteka klas, Web Services zestandaryzowana technologia publikacji serwisów WWW, SOAP Simple Object Access Protocol, HTTP protokół stosowany do przesyłania informacji pomiędzy serwisami WWW, XML opis danych. Visual Basic C++ C# Perl Python Message Queuing XML Web Services ADO.NET and XML.NET Framework Class Libray Common Language Runtime COM+ (Transactions, Partitions, Object Pooling) WIN32 / WIN64 User Interface.NET Framework oferuje ustalony sposób produkcji oprogramowania w oparciu o platformę w której nie akcentuje się żadnego języka programowania. Platforma zawiera wspólne środowisko uruchomieniowe, bibliotekę klas dodatkowe serwery oraz narzędzia. IIS WMI V1.1 6/ 47 Analiza składowych platformy.net Cztery główne filary platformy.net środowisko wykonawcze programów.net odpowiedzialne za lokalizację, wczytanie oraz zarządzanie typami/obiektami platformy.net Common Language Infrastructure (CLI) ECMA-335 Common Language Specification (CLS) zespół zasad oraz reguł niezbędnych do spełniania aby określony język programowania mógł współpracować z CLI. Common Type System (CTS) definicja sposobu reprezentacji typów danych w pamięci maszyny. Common Intermediate Language (CIL) język pośredni (IL) stanowiący niezależny zestaw instrukcji od istniejących rozwiązań procesorowych, do którego kompilowane są wszystkie programy pracujące w ramach środowiska.net, metadane. Common Language Runtime (CLR) Common Language Specification (CLS) Base Class Library (BCL) Metadata Definition and Semantics Common Type System (CTS) Common Intermediate Language (CIL) Instruction Set V1.1 7/ 47 Środowisko wykonawcze maszyna wirtualna Zadaniem maszyny wirtualnej jest kontrola nad odwołaniami uruchamianego programu do sprzętu i systemu operacyjnego. W przypadku braku pewnych funkcji na poziomie sprzętowym zdaniem maszyny jest symulacja brakującej funkcjonalności. W ten sposób aplikacja/program nie jest wstanie sprawdzić, czy jest uruchomiony na prawdziwym, czy też udawanym/wirtualnym sprzęcie. Maszyny wirtualne to m.in.: interpretery, szczególnie interpretery kodu bajtowego, kompilatory JIT, emulatory rzeczywiście istniejącego sprzętu, np. emulatory starszych komputerów, konsol do gier. Uwaga! Nie zawsze jednoznacznie można określić wprost, czy faktycznie mamy do czynienia z maszyną wirtualną przykładem może być Java. V1.1 8/ 47
3 Zastosowania maszyn wirtualnych Maszyny wirtualne są używane do różnych celów, min. do: 1. uruchamiania starszych aplikacji i/bądź starszych systemów operacyjnych w innych środowiskach niż pierwotne, 2. zapewnienia uniwersalnego środowiska uruchomieniowego, 3. bezpiecznego rozdzielania zasobów (min. mainframe, superkomputery), 4. uruchamiania jednocześnie różnych systemów operacyjnych na jednym komputerze (bez konieczności resetu tzw. systemu goszczącego), 5. tworzenia programowych klastrów, 6. analizowania jego pracy/debuggowania tworzonych systemów operacyjnych, 7. optymalizacji tworzonych aplikacji/programów, poprzez zapewnienie kontroli nad ich środowiskiem działania. Wymienione właściwości mogą występować łącznie lub być ograniczone, istotną własnością jest zupełność, czyli dana maszyna wirtualna W powinna być w stanie uruchomić swoją własną kopię. V1.1 9/ 47 Znane maszyny wirtualne Kilka współczesnych programowych maszyn wirtualnych: Nazwa Model Zarząd. pam. Bezpie. Inter. JIT C. CL O.Model Dynam. typ. CLR stack auto/man Y N Y Yes Yes Mono stack auto/man Y Y Y Yes Yes DotGNU stack auto/man Y N Y Yes N JVM stack auto Y Y Y Yes N LLVM register man. N Y Y Yes N Parrot register auto N Y N Yes Yes Legenda: Zarząd. pam. Zarządzanie pamięcią, Bezpie. Bezpieczeństwo, Inter. Interpreter, JIT C. Just-in-time compiler, CL O.Model model obiektowy, Dynam. typ. dynamiczne typowanie. Maszyny wirtualne można podzielić na dwa podstawowe modele: rejestrowy oraz stosowy. Istotnym problemem jest wydajność maszyny, dlatego obecność kompilatora JIT jest niezbędna, aby dane rozwiązanie oferowało odpowiednio wysoką wydajność. V1.1 10/ 47 Usługi określone przez CLR: 1. zarządzanie kodem, czyli jego uruchamianie oraz nadzór nad jego wykonaniem, 2. zarządzanie pamięcią w przypadku obiektów zarządzanych 3. izolacja obszarów pamięci przydzielonych poszczególnym aplikacją.net, 4. konwersja języka IL do kodu maszynowego, 5. dostęp do metadanych (informacja o typach), 6. zabezpieczenia w dostępie kodu do zasobów, 7. weryfikacja i zgodność typów, 8. obsługa wyjątków (przekazywanie ich pomiędzy różnymi językami jak np.: F# oraz C#), 9. współpraca kodu zarządzanego z niezarządzanym, obsługa COM i bibliotekami DLL, 10. automatyzacja tworzenia obiektów, 11. usługi wspomagające tworzenie oprogramowania jak debuggowanie oraz profilowanie V1.1 11/ 47 Wymagania, co do środowiska wykonawczego zostały określone w dokumencie ECMA-335: Base Class Library Support Thread Support COM Marshaler Type Checker Exception Manager Security Engine Debug Engine IL to native code (JIT compiler) Code Manager Garbage (GC) Collector Class Loader Istniejące implementacje wspólnego środowiska wykonawczego: CLR implementacja Microsoftu, MONO DotGNU/Portable.NET V1.1 12/ 47
4 Rozwój CLR Kolejne wydania platformy.net naturalnie pociągają za sobą modyfikację CLR: WCF WPF WF EF Parallel Task Model ASP.NET Core 5 ASP.NET ASP.NET WCS LINQ DLR Windows Store.NET Native CLR 1.0 CLR 1.1 CLR 2.0 CLR 2.0 CLR 2.0 CLR 4.0 CLR 4.0 CLR 4.0.NET 1.0.NET 1.1.NET 2.0.NET 3.0.NET 3.5 (SP1).NET 4.0.NET 4.5.NET 4.6 oznacza to, iż dokument ECMA-335 jest poddawany modyfikacjom w momencie wydawania nowych wersji platformy.net, ostatnia pochodzi z listopada 2016r. V1.1 13/ 47 Common Language Specification Common Language Specification (CLS) Rola CLS CLS to zestaw reguł których spełnienia ma zapewnić współpracę pomiędzy różnymi językami programowania w ramach platformy.net. Trzy główne obszary/poziomy, gdzie stosowane są reguły CLS: 1. framework poziom bibliotek/technologii/zestawów klas, 2. consumer język programowania lub narzędzie dostarczające dostęp do funkcjonalności platformy, 3. extender język programowania lub narzędzie dostarczające dostęp do funkcjonalności platformy oraz rozszerza jej możliwości, V1.1 14/ 47 Common Language Specification Reguły szczegółowe CLS z dokumentu ECMA 335 Przykłady reguł ze standardu: CLS Rule 17 Unmanaged pointer types are not CLS-compliant. Note: CLS (consumer) There is no need to support unmanaged pointer types. CLS (extender) There is no need to provide syntax to define or access unmanaged pointer types. CLS (framework) Unmanaged pointer types shall not be externally exported. CLS Rule 23 System.Object is CLS-compliant. Any other CLS-compliant class shall inherit from a CLS- compliant class. CLS Rule 25 No longer used. [Note: In an earlier version of this standard, this rule stated The accessibility of a property and of its accessors shall be identical. The removal of this rule allows, for example, public access to a getter while restricting access to the setter. end note] V1.1 15/ 47 Common Language Specification Reguły szczegółowe CLS z dokumentu ECMA 335 Przykłady reguł ze standardu: CLS Rule 38 Properties and methods can be overloaded based only on the number and types of their parameters, except the conversion operators named op_implicit and op_explicit, which can also be overloaded based on their return type. Note: CLS (consumer) Can assume that only properties and methods are overloaded, and need not support overloading based on return type unless providing special syntax for operator overloading. If return type overloading isn t supported, then the op_implicit and op_explicit can be ignored since the functionality shall be provided in some other way by a CLS-compliant framework. Consumers must first apply the hide-by- name and hide-by-signature-and-name rules ( ) to avoid any ambiguity. CLS (extender) Should not permit the authoring of overloads other than those specified here. It is not necessary to support operator overloading at all, hence it is possible to entirely avoid support for overloading on return type. CLS (framework) Shall not publicly expose overloading except as specified here. Frameworks authors should bear in mind that many programming languages, including object-oriented languages, do not support overloading and will expose overloaded methods or properties through mangled names. Most languages support neither operator overloading nor overloading based on return type, so op_implicit and op_explicit shall always be augmented with some alternative way to gain the same functionality. V1.1 16/ 47
5 Common Type Systems (CTS) Common Type System (CTS) Wspólny system typów Wspólny system typów określa w jaki sposób typy są deklarowane, używane oraz zarządzane w czasie wykonania (run-time). Najważniejsze funkcje udostępniane przez CTS to min: 1. bezpieczeństwo typów, szybkie wykonywanie kodu, utworzenie niezbędnej struktury do integracji między językowej, 2. pełny model zorientowany obiektowo implementowany w wielu językach programowania.net, 3. określa warunki, które muszą być spełnione przez określony język.net, co pozwala na interakcje pomiędzy obiektami pomiędzy różnymi językami.net. Główne zadanie CTS Obecność CTS pozwala na integrację języków, bowiem języki programowania obecne w.net współdzielą te same typy podstawowe określone przez CTS. V1.1 17/ 47 Common Type Systems (CTS) Ogólny podział typów Type Value Types Refernces Types (identity within app. domain) Built-in Value Types (special encoding in signature) User Defined Integer Types Enums Floating Point Types Typed References V1.1 18/ 47 Wartości dla typów prostych zazwyczaj sa umieszczane na stosie, natomiast typy referencyjne umieszczane są na stercie oraz są zarzadzanie przez mechanizmy CLR (np.: usuwanie przez garbage collector). Common Type Systems (CTS) Ogólny podział typów Refernces Types (identity within app. domain) Self-Describing Interface Pointer Built-In Reference Types Name Equivalent Function String Delegates Managed (might be in heap) Object Boxed Value Types Unmanaged Boxed Enums Structural Equivalent Arrays V1.1 19/ 47 Wartości dla typów prostych zazwyczaj sa umieszczane na stosie, natomiast typy referencyjne umieszczane są na stercie oraz zarzadzanie przez mechanizme CLR (np.: usuwanie przez garbage collector). Common Type Systems (CTS) Wartości dla typów prostych zazwyczaj sa umieszczane na stosie, natomiast typy referencyjne umieszczane są na stercie oraz są zarzadzanie przez mechanizmy CLR (np.: usuwanie przez garbage collector). CTS typy wbudowane built-in Podstawowe typy obecne we wspólnym środowisku wykonawczym. Nazwa CIL Typ CLS Nazwa BCL Opis bool Yes System.Boolean True or false value char Yes System.Char Unicode 16-bit char object Yes System.Object Object or boxed value type string Yes System.String Unicode string float32 Yes System.Single IEC 60559: bit float float64 Yes System.Double IEC 60559: bit float int8 No System.SByte Signed 8-bit integer int16 Yes System.Int16 Signed 16-bit integer int32 Yes System.Int32 Signed 32-bit integer int64 Yes System.Int64 Signed 64-bit integer native int Yes System.IntPtr Signed integer, native size native unsigned int No System.UIntPtr Unsigned integer, native size typedref No System.TypedReference Pointer plus exact type unsigned int8 Yes System.Byte Unsigned 8-bit integer unsigned int16 No System.UInt16 Unsigned 16-bit integer unsigned int32 No System.UInt32 Unsigned 32-bit integer unsigned int64 No System.UInt64 Unsigned 64-bit integer V1.1 20/ 47
6 Common Type Systems (CTS) CTS a typy w języku C# (I) Typy wartościowe: (1) Proste typy numeryczne i znakowe: (a) wielkość integer ze znakiem: sbyte, short, int, long, (b) wielkość integer bez znaku: byte, ushort, uint, ulong, (c) znak unicode: char, (d) IEEE floating point: float, double, (e) liczby o dużej precyzji: decimal, (f) boolean: bool. (2) Typ enum: enum EName {..., (3) Typ struct: struct SName {..., (4) Typy nullable : typy mają możliwość przyjęcia wartości null. (II) Typy referencyjne: (1) Typ klasowy: (a) typ podstawowy dla typu obiektowego: object, (b) łańcuchy znaków unicode: string, (c) klasy zdefiniowane przez użytkownika: class CName {..., (2) Typ interface: interface IName {..., (3) Typ tablicowy: jedno i wielowymiarowe tablice zdefiniowane przez użytkonika: int[], int[,], (4) Typ delegate : typy użytkownika: delegate int DName(... ). V1.1 21/ 47 Przegląd języków programowania.net Opracowano ponad 40 języków dla.net V1.1 22/ 47 Przegląd języków programowania.net Najważniejsze języki Najważniejsze języki dostępne z pudełka to: C#, Visual Basic.NET, C++/CLI, J# (odmiana języka Java opracowany przez Microsoft), JScript.NET (kompilowana odmiana języka JScript). Inne ważne języki: 1. COBOL, Delphi.NET, Oxygen, 2. Eiffel, Fortran, Lisp, 3. Nemerle, F#, Python, P# (Prolog). V1.1 23/ 47 Przegląd języków programowania.net F# język funkcyjny Definicja funkcji rekurencyjnej fib obliczającej liczby ciągu Fibbonaciego: let rec fib x = match x with 1 -> 1 2 -> 1 x -> fib (x - 1) + fib (x - 2) printfn "(fib 2) = %i" (fib 2) printfn "(fib 6) = %i" (fib 6) printfn "(fib 11) = %i" (fib 11) i elementy ciągu Lucasa: let rec luc x = match x with x when x <= 0 -> failwith "value must be greater than 0" 1 -> 1 2 -> 3 x -> luc (x - 1) + luc (--x - 2) printfn "(luc 2) = %i" (luc 2) V1.1 24/ 47
7 Przegląd języków programowania.net Konwersja liczby całkowitej na postać binarną: let BitsNum = 32 ;; let binary_of_int n = [ for i in BitsNum > if (n >>> i) % 2 = 0 then "0" > String.concat "" ;; else "1" ] let x1 = binary_of_int 1431 ;; let x2 = binary_of_int ( ) ;; V1.1 25/ 47 Analiza biblioteki klas Zadania i funkcje biblioteki klas Standard ECMA-335 określa także postać standardowej biblioteki klas, zaliczane są następujące pakiety (zachowane zostało oryginalne nazewnictwo standardu): 1. Run-time infrastructure library 2. Base Class Library (BCL) 3. Network library 4. Reflection library 5. XML library 6. Extended numerics library 7. Extended array library 8. Vararg library 9. Parallel library V1.1 26/ 47 Analiza biblioteki klas Ogólny schemat Base Class Library BCL.NET 3.5 V1.1 27/ 47 plakat autorstwa firmy Microsoft Analiza biblioteki klas Ogólny schemat Base Class Library BCL.NET 4.0 V1.1 28/ 47 plakat autorstwa firmy Addison-Wesley
8 Analiza biblioteki klas Kilka klas z przestrzeni System Przestrzeń nazw System System.CodeDom System.ComponentModel System.Collections, System.Configuration System.IO System.Text System.TextRegular Krótki opis Zawiera klasy definiujące najczęściej używane typy danych, zdarzenia i obsługę zdarzeń a także interfejsy, atrybuty oraz wyjątki Reprezentacja dokumentu/kodu źródłowego w postaci drzewa Tworzenie komponentów, kontrolek, rejestracja oraz adaptacja Różne kolekcje obiektów min.: listy, kolejki, tablice bitów, tablice skrótów i słowniki Dostęp do ustawień konfiguracyjnych.net i podzespołów oraz obsługa błędów w plikach konfiguracyjnych (pliki * config) Podstawowy dostęp i zarządzanie strumieniami danych Kodowanie i konwersje znaków, manipulacje łańcuchami znaków Obsługa wyrażeń regularnych V1.1 29/ 47 Budowa podzespołu Assemblies, czyli podzespoły /Assemblies (podzespół/zestaw/podzespoły/zestawy) Podzespół to logiczny blok, skompilowany do kodu pośredniego. Z tych elementów budowane są aplikacje.net, zawierają one kod w języku IL oraz metadane. Podzespół opatrzony jest numerem wersji i jest on zamkniętą spójną całością udostępniającym określoną funkcjonalność. Istnieją dwa rodzaje metadanych: w pierwszym podzespół jest traktowany jako jednostka i jest to tzw. manifest oraz metadane przeznaczone do opisu poszczególnych typów zawartych w podzespole. Manifest jest częścią podzespołu i opisuje jego kod i zasoby poprzez podanie: nazwy (tzw. tożsamości) podzespołu, numer wersji oraz tzw. opisu kultury (informacje regionalne oraz informacje o językach obsługiwanych przez dany podzespół), podpisu cyfrowego dla podzespołu, pliki zawarte w podzespole, typy i zasoby zawarte w podzespole wraz z informacją które typy/zasoby są dostępne do użycia przez inne podzespoły, powiązania z innymi podzespołami, uprawnienia które są wymagane do poprawnej pracy podzespołu. V1.1 30/ 47 Budowa podzespołu Assemblies, czyli podzespoły Metadane typów zawierają opis typów zdefiniowanych w kodzie zarządzanym. Zawarte są w tym samym pliku co kod IL, zawierają min: 1. Opis typów: nazwa typu, zasięg typu (publiczny bądź ograniczony do podzespołu) nazwę typu po którym typ dziedziczy, interfejsy zaimplementowane, metody zaimplementowane, właściwości typu, zdarzenia obsługiwane przez typ. 2. Opis atrybutów atrybuty posiadają określone nazwy i funkcje określone w środowisku.net, określają sposób wykonywania kodu bądź opisują wymagania co do bezpieczeństwa. Source1.cs class A... class B... Source2.cs class C... class D... csc Source1.cs Source2.cs Program.exe manifest metadata IL of type A IL of type B IL of type C IL of type D class loader V1.1 31/ 47 Budowa podzespołu Assemblies, czyli podzespoły Ważne elementy związane z podzespołami to: 1. po kompilacji do kodu IL, kod zarządzany jest częścią podzespołu składającego się z jednego bądź wielu plików DLL/EXE, 2. podzespoły mogą być określone jako prywatne bądź współdzielony umieszczone są w GAC (Global Cache), 3. podzespół może zostać podpisany kluczem cyfrowym (sygnaturą) oraz opatrzony 4. informacje o prywatnym podzespole nie są wprowadzane do platformy.net (rejestr nie jest modyfikowany), 5. podzespoły w katalogu aplikacji nie wymagają dodatkowych operacji, 6. współużytkowanie podzespoły są umieszczene w GAC, 7. podzespół może mieć tzw. silną nazwę (podpis/sygnatura cyfrowa) weryfikowana podczas ładowania podzespołu lub słabą nazwę, 8. wersja podzespołu w postaci G.D.K.K (główny/major, drugorządny/minor, kompilacji/compilation, korekty/revision) np.: wersja informacyjna, czyli ciąg znaków czytelnych dla ludzi, 10. numery wersji podzespołów od których zależy dany podzespół. V1.1 32/ 47
9 Budowa podzespołu Model podzespołu (assembly model) Manifest jest zapisany w sekcji metadanych zawierający tzw. moduł master, który może lecz nie jest wymagane aby opisywał również typy. 1 Podzespół to pojedyncza/jednolita jednosta w aplikacji zawieracjace klasy, numery wersji oraz opis bezpieczeństwa. Pliki podzespołów (exe, dll) pełnią rolę podobną jak pliki JAR w przypadku Javy lub starsze w formacie MS CAB. Static «use» 1 Type Metadata Manifest Metadata Element 1.. * 1.. * *.NET «use» Module Type Code 1.. * Dynamic (Created in Memory) W formacie Portable Executable (PE), pojęcia "Moduł" oraz "Plik PE" są stosowane wymiennie. Stosowane są rozszerznia.exe,.dll,.netmodule. 1.. * * * Resource X509Certificate Dependencies Machine Code CIL Text Image Public (Shared) Private publickey * Global Registers 1 Cache 1 Moduły oraz zasoby (np.: pliki PNG badz JPG) sa logicznie przypisane podzespołom, fizycznie również tego typu pliki moga znajdować się plikach assembly. Jednak w wielu przypadkach, z praktycznych powodów (np.: wielkość plików) pliki tego typu nie są umieszczane w podzespołach. Istnieja tylko odniesienia do zasobów umieszczeone w manifescie podzespołu. Takie rozwiązanie przyspiesza ładowanie podzespoły natomiast dostęp do zasobów jest uzyskiwany w tzw. trybie leniwych obliczeń. V1.1 33/ 47 Język pośredni Język pośredni / Kod zarządzany Język pośredni lub wspólny język pośredni (ang. Common Intermediate Language CIL) to język niskiego poziomu dla platformy.net. Stanowi on odpowiednik assemblera dla języków wysokiego poziomu jak C/C++. Ogólnie CIL jest podobny do assemblera, jednak został on wyposażony w konstrukcje programowania obiektowego i nie jest wykonywany przez stosową maszynę wirtualną ale kompilowany przez JIT/ngen do kodu maszynowego. Kod zarządzany, to kod zgodny ze specyfikacją CLR (CLS) zawiera również metadane. W ten sposób umożliwia się realizację: usług automatycznego zarządzania zasobami, współpracy fragmentów/podzespołów oprogramowania napisanych w różnych językach programowania, zarządzania uprawnieniami w dostępie do podzespołu oraz ułatwia zarządzanie cyklem życia obiektów (min. system odśmiecający garbage collector). MSIL czy IL Początkowo język pośredni nazywał Microsoft Intermediate Language (MSIL), jednak po procedurze standaryzacji C# oraz CLI obowiązująca nazwa to CIL lub IL. V1.1 34/ 47 Kompilacja i wykonywanie programów IL Kompilacja i wykonywanie programów IL Diagram kompilacji i wykonania: Source Code Ogólne podejście do kompilacji: Compiler C# Source File VB Source File other.net Source File EXE/DLL Kompilacja C# Compiler VB.NET Compiler other.net Compiler IL and Metadata - CIL - Type Info - CIL - Type Info - CIL - Type Info Class Libraries IL and Metadata Class Loader JIT Compiler Common Language Runtime (CLR) Run time JIT Compiler [optional verification] Trusted pre- JITed code. Native Code Native Code Native Code Operating System Managed Native Code Execution Class to an uncompiled method/class Security Checks Runtime Engine V1.1 35/ 47 Kompilacja i wykonywanie programów IL Podział instrukcji IL Instrukcje kodu bajtowego CIL można podzielić na następujące grupy: 1. Wczytaj i Zapisz Load and store 2. Arytmetyczne Arithmetic 3. Konwersji typów Type conversion 4. Tworzenia i manipulacji obiektami Object creation and manipulation 5. Instrukcje zarządzania stosem Operand stack management (push / pop) 6. Instrukcje sterujące Control transfer (branching) 7. Wywołania metody i powrotu Method invocation and return 8. Zgłaszania sytuacji wyjątkowej Throwing exceptions 9. Realizujące współbieżność Monitor-based concurrency V1.1 36/ 47
10 Przykład pusty program Kod w IL, nie wykonuje żadnych istotnych czynności:.assembly hello1 {.class hello1 {.method static public void main() il managed {.entrypoint ret Instrukcje.entrypoint a ret stanowią w pewnym sensie odpowiednik funkcji main. V1.1 37/ 47 Przykład wyświetlenie komunikatu Kod w IL, wyświetla komunikat tekstowy:.assembly hello2 {.class hello2 {.method static public void main() il managed {.entrypoint ldstr "Witojcie!!!" call void [mscorlib]system.console::writeline(class System.String) ret Można powiedzieć, że assembler IL to assembler obiektowy. V1.1 38/ 47 Odczytanie liczby całkowitej i wyświetlenie jej na ekranie.assembly hello3 {.method public static void Main() il managed {.entrypoint.maxstack 2.locals (int32 V_0) ldstr "Liczba calkowita int32:" call void [mscorlib]system.console::writeline(string) call string [mscorlib]system.console::readline() call int32 [mscorlib]system.int32::parse(string) stloc.0 ldstr "Wpisano liczbe {0." ldloc.0 box [mscorlib]system.int32 call void [mscorlib]system.console::writeline(string, object) ret Jednak bez klas też można tworzyć programy w IL u. V1.1 39/ 47 Porównanie dwóch liczb całkowitych.assembly big_and_small_nums {.method public static void Main() il managed {.entrypoint.maxstack 2.locals init (int32 V_0, int32 V_1) IL_0000: ldstr "Podaj pierwsza liczbe" IL_0005: call void [mscorlib]system.console::writeline(string) IL_000a: call string [mscorlib]system.console::readline() IL_000f: call int32 [mscorlib]system.int32::parse(string) IL_0014: stloc.0 IL_0015: ldstr "I jeszcze druga" IL_001a: call void [mscorlib]system.console::writeline(string) IL_001f: call string [mscorlib]system.console::readline() IL_0024: call int32 [mscorlib]system.int32::parse(string) IL_0029: stloc.1 IL_002a: ldloc.0 IL_002b: ldloc.1 IL_002c: bne.un.s IL_003a IL_002e: ldstr "Obie wielkosci sa rowne" IL_0033: call void [mscorlib]system.console::writeline(string) IL_0038: br.s IL_0054 IL_003a: ldloc.0 IL_003b: ldloc.1 IL_003c: bge.s IL_004a IL_003e: ldstr "Druga liczba jest wieksza niz pierwsza" IL_0043: call void [mscorlib]system.console::writeline(string) IL_0048: br.s IL_0054 IL_004a: ldstr "Druga liczba jest mniejsza niz pierwsza" IL_004f: call void [mscorlib]system.console::writeline(string) IL_0054: ldstr "Nacisnij Enter aby zakonczyc program" call void [mscorlib]system.console::writeline(string) call string [mscorlib]system.console::readline() IL_0059: pop IL_005a: ret V1.1 40/ 47
11 Porównanie dwóch liczb całkowitych using System; namespace Test1a { class Program { public static void Main(string[] args) { Console.WriteLine("Podaj pierwsza liczbe"); int x = Int32.Parse( Console.ReadLine() ); Console.WriteLine("I jeszcze druga"); int y = Int32.Parse( Console.ReadLine() ); if ( x == y ) { Console.WriteLine("Obie wielkosci sa rowne"); else { if ( x < y ) { Console.WriteLine("Druga liczba jest wieksza niz pierwsza"); else { Console.WriteLine("Druga liczba jest mniejsza niz pierwsza"); Console.WriteLine("Nacisnij Enter aby zakonczyc program"); Console.ReadLine(); V1.1 41/ 47 Definicja metod.assembly extern mscorlib {.assembly Methods {.ver 1:0:1:0.module Methods.exe.method static void main() cil managed {.maxstack 2.entrypoint ldc.i4 15 ldc.i4 27 call int32 SumCalculate(int32, int32) call void WriteNum(int32) ret.method public static int32 SumCalculate (int32, int32 ) cil managed {.maxstack 2 ldarg.0 ldarg.1 add ret.method public static void WriteNum(int32) cil managed {.maxstack 2 ldstr "Wartosc argumentu: " call void [mscorlib]system.console::write(string) ldarg.0 call void [mscorlib]system.console::write(int32) ret V1.1 42/ 47 Od C# przez IL do assemblera Intel x86/x64 IL source Source code in C# Vector2D v; v = new Vector(); v.x = 10; v.y = 20; Source code in Intel x86_32 assembly call ED00AAD1h mov ecx, eax call dword ptr ds:[00af0012h] mov dword ptr [ecx+4], 000Ah mov dword ptr [ecx+8], 0014h.locals init ([0] class Vector2D v) newobj instance void Vector2D::.ctor() stloc.0 ldloc.0 ldc.i4 0x0A stfld int32 Vector2D::x ldloc.0 ldc.i4 0x14 stfld int32 Vector2D::y V1.1 43/ 47 Tabela instrukcji wybór Tabela instrukcji wybór Opcode Instrukcja Opis 0x58 add Add two values, returning a new value 0xD6 add.ovf Add signed integer values with overflow check 0xD7 add.ovf.un Add unsigned integer values with overflow check 0x3E ble <int32 (target)> Branch to target if less than or equal to 0x8C box <typetok> Convert a boxable value to its boxed form 0x38 br <int32 (target)> skok do etykiety target 0x2B br.s <int8 (target)> j.w. krótka forma 0x01 break Inform a debugger that a breakpoint has been reached 0x28 call <method> Call method described by method 0xFE 0x02 cgt Push 1 (of type int32) if value1 > value2, else push 0 0xC3 ckfinite Throw ArithmeticException if value is not a finite number 0x73 newobj <ctor> Allocate an uninitialized object or value type and call ctor 0x04 ldarg.2 Load argument 2 onto the stack 0x11 ldloc.s <uint8 (indx)> Load local variable of index indx onto stack, short form 0xFE 0x0D ldloca <uint16 (indx)> Load address of local variable with index indx 0x62 shl Shift an integer left (shifting in zeros), return an integer 0x63 shr Shift an integer right (shift in sign), return an integer 0x7A throw Zgłoszenie wyjątku 0x79 unbox <valuetype> Extract a value-type from obj, its boxed representation 0xFE 0x13 volatile. [prefix] Subsequent pointer reference is volatile 0x61 xor Bitwise XOR of integer values, returns an integer V1.1 44/ 47
12 Tabela instrukcji wybór Język pośredni podsumowanie Czy warto poznawać assembler IL? Tak, choć naturalnie tworzenie dużych programów raczej mija się z celem, jednak poznanie zagadnień związanych z IL - asm na pewno przyczyni się do pogłębienia wiedzy o wewnętrznych mechanizmach CLR oraz CLI. Co jest szczególne ważne, jeśli planuje się tworzenie własnego kompilatora do platformy.net. V1.1 45/ 47 Już za tydzień na wykładzie W następnym tygodniu między innymi Wykład Programowanie w C# środowisko Visual Studio 2010, MonoDevelop, syntaktyka C#, wyjątki, współpraca z DLL, 1. przegląd narzędzi dla programistów w platformie.net, min. ildasm, gacutil, 2. podstawowe informacje o C# 3. pojęcie klasy, 4. podstawowe informacje wejścia/wyjścia 5. tablice, ciągi znaków, wyrażenia regularne, 6. współpraca z kodem niezarządzanym, V1.1 46/ 47 Już za tydzień na wykładzie Proponowane tematy prac pisemnych: 1. analiza i porównanie bibliotek standardowych dla języka Java oraz platformy.net, 2. różnice pomiędzy IL dla platformy.net a językiem pośrednim dla maszyny wirtualnej JAVA, 3. opis technicznej struktury oraz roli podzespołów. Dziękuje za uwagę!!! V1.1 47/ 47
Platforma.NET Wykład 2 Składowe platformy.net. Spis treści. Marek Sawerwain. Ostatnia kompilacja pliku: 22 marca 2018, t: 18:54. Notatki.
Platforma.NET Wykład 2 Składowe platformy.net Platforma.NET Wykład 2 Składowe platformy.net Marek Sawerwain Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski Ostatnia kompilacja
Microsoft IT Academy kurs programowania
Microsoft IT Academy kurs programowania Podstawy języka C# Maciej Hawryluk Język C# Język zarządzany (managed language) Kompilacja do języka pośredniego (Intermediate Language) Kompilacja do kodu maszynowego
Platforma.NET Wykªad 2 Skªadowe platformy.net
Platforma.NET Wykªad 2 Skªadowe platformy.net Marek Sawerwain Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski Ostatnia kompilacja pliku: 9 marca 2017, t: 19:26 V1.1 1/ 47 Spis
Programowanie C# mgr in. Dariusz Ku. p. 119A dkus@dune.pol.lublin.pl http://antenor.pol.lublin.pl/~dkus
Programowanie C# mgr in. Dariusz Ku p. 119A dkus@dune.pol.lublin.pl http://antenor.pol.lublin.pl/~dkus Translacja kodu Kod ródłowy Java, C# Kompilator Kompilator Kod poredni Interpreter Maszyna wirtualna
Podstawy programowania. Wprowadzenie
Podstawy programowania Wprowadzenie Proces tworzenia programu Sformułowanie problemu funkcje programu zakres i postać danych postać i dokładność wyników Wybór / opracowanie metody rozwiązania znaleźć matematyczne
C# /.NET. Copyright by 3bird Projects 2018,
C# /.NET Copyright by 3bird Projects 2018, http://edukacja.3bird.pl Ogólne Opracowana przez Microsoft platforma programistyczna.net Framework jest odpowiednikiem platformy Java. Obejmuje gotowe biblioteki,
Programowanie Komputerów
Programowanie Komputerów Łukasz Kuszner pokój 209, WETI http://www.kaims.pl/ kuszner/ kuszner@eti.pg.gda.pl Wykład 30 godzin, Laboratoria 30 godzin 2012/ Strona 1 z 17 1. Typy i zmienne Jak wiemy, komputer
Języki i paradygmaty programowania doc. dr inż. Tadeusz Jeleniewski
Języki i paradygmaty programowania doc. dr inż. Tadeusz Jeleniewski e-mail: t.jeleniewski@neostrada.pl tadeusz.jeleniewski@pwr.wroc.pl http://www.tjeleniewski.wstt.edu.pl Treści kształcenia: Paradygmaty
Kurs programowania. Wykład 13. Wojciech Macyna. 14 czerwiec 2017
Wykład 13 14 czerwiec 2017 Java vs cpp - podobieństwa Podobny sposób definiowania klas. Występowanie typów podstawowych: boolean, char, byte, short, int, long, float, double. Podobna zasada definiowania
Języki i paradygmaty programowania - 1
doc. dr inż. Tadeusz Jeleniewski e-mail: t.jeleniewski@neostrada.pl tadeusz.jeleniewski@pwr.edu.pl http://www.tjeleniewski.wstt.edu.pl Cele przedmiotu Umiejętność zastosowania i oceny przydatności paradygmatów
Dostęp do funkcji niskopoziomowych w.net Compact Framework
Programowanie urządzeń mobilnych Laboratorium Dostęp do funkcji niskopoziomowych w.net Compact Framework Wstęp Technologia.NET Compact Framework dostarcza deweloperom oprogramowania bardzo wiele możliwości
Języki i metodyka programowania. Język C# pętle, sterowanie, wyjątki
Język C# pętle, sterowanie, wyjątki Język C# pętle Pętle: while ( ) do { while ( ); for ( ; ; ) foreach ( in
Programowanie współbieżne i rozproszone
Programowanie współbieżne i rozproszone WYKŁAD 11 dr inż. CORBA CORBA (Common Object Request Broker Architecture) standard programowania rozproszonego zaproponowany przez OMG (Object Management Group)
MATERIAŁY DO ZAJĘĆ I. Podstawowe pojęcia. Algorytm. Spis treści Przepis
MATERIAŁY DO ZAJĘĆ I Podstawowe pojęcia Spis treści I. Algorytm II. Schemat blokowy III. Struktury danych IV. Program komputerowy V. Opis środowiska programistycznego VI. Obsługa wejścia wyjścia VII. Przykład
Programowanie w środowiskach graficznych. Wykład 3 Język C#
Programowanie w środowiskach graficznych Wykład 3 Język C# 1 Zagadnienia 1. Wprowadzenie 2. Przestrzenie nazw 3. Typy, parametry, konwersje 4. Klasy 5. Instrukcje sterujące 6. Właściwości 7. Interfejsy,
Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016
Wykład 1 3 marca 2016 Słowa kluczowe języka Java abstract, break, case, catch, class, const, continue, default, do, else, enum, extends, final, finally, for, goto, if, implements, import, instanceof, interface,
Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki
Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki Język programowania prosty bezpieczny zorientowany obiektowo wielowątkowy rozproszony przenaszalny interpretowany dynamiczny wydajny Platforma
MATERIAŁY DO ZAJĘĆ II
MATERIAŁY DO ZAJĘĆ II Zmienne w C# Spis treści I. Definicja zmiennej II. Hierarchia typów (CTS) III. Typy wbudowane IV. Deklaracja zmiennych V. Literały VI. Pobieranie i wypisywanie wartości zmiennych
Wykłady 1, 2. Wstęp do programowania w środowisku Visual C++ Autor: Zofia Kruczkiewicz
Wykłady 1, 2 Wstęp do programowania w środowisku Visual C++ Autor: Zofia Kruczkiewicz 1 Zagadnienia 1. Podstawowe pojęcia 2. Tworzenie aplikacji w Windows Forms 3. Zawartość projektu 4. Podstawowe cechy
Programowanie obiektowe
Programowanie obiektowe Laboratorium 1. Wstęp do programowania w języku Java. Narzędzia 1. Aby móc tworzyć programy w języku Java, potrzebny jest zestaw narzędzi Java Development Kit, który można ściągnąć
Język ludzki kod maszynowy
Język ludzki kod maszynowy poziom wysoki Język ludzki (mowa) Język programowania wysokiego poziomu Jeśli liczba punktów jest większa niż 50, test zostaje zaliczony; w przeciwnym razie testu nie zalicza
Metodyka programowania. Podstawy C#
Metodyka programowania Podstawy C# Platforma.NET Platforma.NET (.NET Framework) Platforma programistyczna Microsoft, Obejmuje - środowisko uruchomieniowe CLR (Common Language Runtime) - biblioteki klas
Tworzenie aplikacji w języku Java
Tworzenie aplikacji w języku Java Wykład 1 Piotr Czapiewski Wydział Informatyki ZUT 2 października 2009 Piotr Czapiewski (Wydział Informatyki ZUT) Tworzenie aplikacji w języku Java 2 października 2009
Środowiska i platformy programistyczne
Środowiska i platformy programistyczne 1 Rys historyczny lata 80-90: efektywność! Cel: zwiększyć efektywność programisty jedno narzędzie: integracja edytor kodu, funkcje programistyczne (kompilacja, łączenie,
Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz
Programowanie obiektowe Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Java P. L. Lemay, Naughton R. Cadenhead Java Podręcznik 2 dla kaŝdego Języka Programowania Java Linki Krzysztof Boone oprogramowania
Programowanie obiektowe
Programowanie obiektowe Wykład 2: Wstęp do języka Java 3/4/2013 S.Deniziak: Programowanie obiektowe - Java 1 Cechy języka Java Wszystko jest obiektem Nie ma zmiennych globalnych Nie ma funkcji globalnych
Java - wprowadzenie. Programowanie Obiektowe Mateusz Cicheński
Java - wprowadzenie Programowanie Obiektowe Mateusz Cicheński O języku Czym jest Java Cechy charakterystyczne języka Przykładowe zastosowania Składnia języka Podstawowe typy Wybrane słowa kluczowe Plan
Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak
Java język programowania obiektowego Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak 1 Język Java Język Java powstał w roku 1995 w firmie SUN Microsystems Java jest językiem: wysokiego
C# 6.0 : kompletny przewodnik dla praktyków / Mark Michaelis, Eric Lippert. Gliwice, cop Spis treści
C# 6.0 : kompletny przewodnik dla praktyków / Mark Michaelis, Eric Lippert. Gliwice, cop. 2016 Spis treści Spis rysunków 11 Spis tabel 13 Przedmowa 15 Wprowadzenie 17 Podziękowania 27 O autorach 29 1 Wprowadzenie
Programowanie RAD Delphi
Programowanie RAD Delphi Dr Sławomir Orłowski Zespół Fizyki Medycznej, Instytut Fizyki, Uniwersytet Mikołaja Kopernika w Toruniu Pokój: 202, tel. 611-32-46, e-mial: bigman@fizyka.umk.pl Delphi zasoby Aplikacje
Początki Javy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 8
Początki Javy Java została pierwotnie zaprojektowana dla telewizji interaktywnej, ale była to zbyt zaawansowaną technologią dla branży cyfrowej telewizji kablowej. James Gosling, Mike Sheridan i Patrick
Programowanie obiektowe zastosowanie języka Java SE
Programowanie obiektowe zastosowanie języka Java SE Wstęp do programowania obiektowego w Javie Autor: dr inŝ. 1 Java? Java język programowania obiektowo zorientowany wysokiego poziomu platforma Javy z
Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat
Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Program, to lista poleceń zapisana w jednym języku programowania zgodnie z obowiązującymi w nim zasadami. Celem programu jest przetwarzanie
Java EE produkcja oprogramowania
Java EE produkcja oprogramowania PPJ PODSTAWY PROGRAMOWANIA W JAVIE PODSTAWY JĘZYKA JAVA 1 Warszawa, 2016Z 2 Ogólna charakterystyka języka Java 3 Java 1/2 Język programowania Java został opracowany przez
METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02
METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się
Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++
Programowanie Wstęp p do programowania Klasa 3 Lekcja 9 PASCAL & C++ Język programowania Do przedstawiania algorytmów w postaci programów służą języki programowania. Tylko algorytm zapisany w postaci programu
Instytut Informatyki, Politechnika Poznańska, SUM-TWO. Zaawansowane programowanie obiektowe
Instytut Informatyki, Politechnika Poznańska, SUM-TWO Zaawansowane programowanie obiektowe 9 października 2016 dr inż. Bartłomiej Prędki pok. 124 Centrum Wykładowe tel. 61-665-2932 Bartlomiej.Predki@cs.put.poznan.pl
Czym jest Java? Rozumiana jako środowisko do uruchamiania programów Platforma software owa
1 Java Wprowadzenie 2 Czym jest Java? Język programowania prosty zorientowany obiektowo rozproszony interpretowany wydajny Platforma bezpieczny wielowątkowy przenaszalny dynamiczny Rozumiana jako środowisko
Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.
Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych. 1. Przygotowanie środowiska programistycznego. Zajęcia będą
Programowanie Komputerów
Programowanie Komputerów Łukasz Kuszner pokój 209, WETI http://www.kaims.pl/ kuszner/ kuszner@eti.pg.gda.pl Wykład 30 godzin, Laboratoria 30 godzin 2012/ Strona 1 z 28 1. Tablice w C# Indeksowane od zera
Języki Programowania II Wykład 3. Java podstawy. Przypomnienie
Języki Programowania II Wykład 3 Java podstawy Przypomnienie Analiza, projektowanie, programowanie, testowanie, wdrażanie Iteracyjnie nie kaskadowo Przypadki użycia = opowiastki o używaniu systemu = wymagania
Testy jednostkowe - zastosowanie oprogramowania JUNIT 4.0 Zofia Kruczkiewicz
Testy jednostkowe - zastosowanie oprogramowania JUNIT 4.0 http://www.junit.org/ Zofia Kruczkiewicz 1. Aby utworzyć test dla jednej klasy, należy kliknąć prawym przyciskiem myszy w oknie Projects na wybraną
JAVA. Platforma JSE: Środowiska programistyczne dla języka Java. Wstęp do programowania w języku obiektowym. Opracował: Andrzej Nowak
JAVA Wstęp do programowania w języku obiektowym Bibliografia: JAVA Szkoła programowania, D. Trajkowska Ćwiczenia praktyczne JAVA. Wydanie III,M. Lis Platforma JSE: Opracował: Andrzej Nowak JSE (Java Standard
Python wstęp do programowania dla użytkowników WCSS
Python wstęp do programowania dla użytkowników WCSS Dr inż. Krzysztof Berezowski Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej Wprowadzenie CHARAKTERYSTYKA JĘZYKA Filozofia języka
4 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.01 Rok akad. 2011/2012 2 / 24
Wymagania proceduralnych języków wysokiego poziomu ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH modele programowe procesorów ASK MP.01 c Dr inż. Ignacy Pardyka UNIWERSYTET JANA KOCHANOWSKIEGO w Kielcach Rok akad.
Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe
Wykład 15 Wprowadzenie do języka na bazie a Literatura Podobieństwa i różnice Literatura B.W.Kernighan, D.M.Ritchie Język ANSI Kompilatory Elementarne różnice Turbo Delphi FP Kylix GNU (gcc) GNU ++ (g++)
Instrukcja laboratoryjna cz.3
Języki programowania na platformie.net cz.2 2015/16 Instrukcja laboratoryjna cz.3 Język C++/CLI Prowadzący: Tomasz Goluch Wersja: 2.0 I. Utworzenie projektu C++/CLI z interfejsem graficznym WPF 1 Cel:
Wprowadzenie. Wprowadzenie
Wprowadzenie Platforma.NET (.NET Framework) stanowi zintegrowane, niezależne od języka programowania środowisko programistyczne służące do wytwarzania i uruchamiania aplikacji lokalnych, internetowych
Podstawy Programowania ELEMENTY PROGRAMU i TYPY DANYCH
Podstawy Programowania ELEMENTY PROGRAMU i TYPY DANYCH Michał Bujacz bujaczm@p.lodz.pl B9 Lodex 207 godziny przyjęć: środy i czwartki 10:00-11:00 http://www.eletel.p.lodz.pl/bujacz/ 1 Pytania weryfikacyjne:
Programowanie obiektowe
Przygotował: Jacek Sroka 1 Programowanie obiektowe Wykład 3 Java podstawy Przygotował: Jacek Sroka 2 Przypomnienie Analiza, projektowanie, programowanie, testowanie, wdrażanie Iteracyjnie nie kaskadowo
Programowanie obiektowe
Programowanie obiektowe Podstawowe cechy i możliwości języka Scala mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 2017 1 / 32 mgr inż. Krzysztof Szwarc Programowanie obiektowe Informacje
Wykład V. Rzut okiem na języki programowania. Studia Podyplomowe INFORMATYKA Podstawy Informatyki
Studia Podyplomowe INFORMATYKA Podstawy Informatyki Wykład V Rzut okiem na języki programowania 1 Kompilacja vs. interpretacja KOMPILACJA Proces, który przetwarza program zapisany w języku programowania,
Programowanie obiektowe
Programowanie obiektowe Wykład 2 Marcin Młotkowski 4 marca 2015 Plan wykładu 1 2 3 4 5 Marcin Młotkowski Programowanie obiektowe 2 / 47 Krótki opis C Obiektowy, z kontrolą typów; automatyczne odśmiecanie;
JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.
JAVA Java jest wszechstronnym językiem programowania, zorientowanym obiektowo, dostarczającym możliwość uruchamiania apletów oraz samodzielnych aplikacji. Java nie jest typowym kompilatorem. Źródłowy kod
Programowanie obiektowe. Wprowadzenie
1 Programowanie obiektowe Wprowadzenie 2 Programowanie obiektowe Object-oriented programming Najpopularniejszy obecnie styl (paradygmat) programowania Rozwinięcie koncepcji programowania strukturalnego
Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]
1. Typy. Java jest językiem programowania z silnym systemem kontroli typów. To oznacza, że każda zmienna, atrybut czy parametr ma zadeklarowany typ. Kompilator wylicza typy wszystkich wyrażeń w programie
Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1)
MAS dr. Inż. Mariusz Trzaska Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1) Zagadnienia o Podstawy o Kontrolowanie sterowania o Klasy o Interfejsy o Obsługa błędów o Pojemniki o System
Wprowadzenie do języka Java
WSNHiD, Programowanie 2 Lab. 1 [ część 1 ] Wprowadzenie do języka Java Wprowadzenie Język programowania Java jest obiektowym językiem programowania. Powstał w 1995 i od tej pory był intensywnie rozwijany.
Techniki Programowania
Techniki Programowania Łukasz Madej Katedra Informatyki Stosowanej i Modelowania Wykłady opracowane we współpracy z Danutą Szeligą, Łukaszem Sztangretem Dr hab. inż. Łukasz Madej, prof. AGH Budynek B5,
JAVA W SUPER EXPRESOWEJ PIGUŁCE
JAVA W SUPER EXPRESOWEJ PIGUŁCE Obiekt Obiekty programowe to zbiór własności i zachowań (zmiennych i metod). Podobnie jak w świecie rzeczywistym obiekty posiadają swój stan i zachowanie. Komunikat Wszystkie
Wykład 1
Wstęp do programowania 1 Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 1 Wprowadzenie Cel wykładów z programowania proceduralnego Wykład jest poświęcony językowi C i jego
Wykład 3 Składnia języka C# (cz. 2)
Wizualne systemy programowania Wykład 3 Składnia języka C# (cz. 2) 1 dr Artur Bartoszewski -Wizualne systemy programowania, sem. III- WYKŁAD Wizualne systemy programowania Metody 2 Metody W C# nie jest
Grzegorz Cygan. Wstęp do programowania mikrosterowników w języku C
Grzegorz Cygan Wstęp do programowania mikrosterowników w języku C Mikrosterownik Inne nazwy: Microcontroler (z języka angielskiego) Ta nazwa jest powszechnie używana w Polsce. Mikrokomputer jednoukładowy
INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE
Studia podyplomowe dla nauczycieli INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE Przedmiot JĘZYKI PROGRAMOWANIA DEFINICJE I PODSTAWOWE POJĘCIA Autor mgr Sławomir Ciernicki 1/7 Aby
Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków
Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków mgr inż. Maciej Lasota Version 1.0, 13-05-2017 Spis treści Wyjątki....................................................................................
Programowanie i projektowanie obiektowe
Programowanie i projektowanie obiektowe Wstęp Paweł Daniluk Wydział Fizyki Jesień 2011 P. Daniluk (Wydział Fizyki) PO w. I Jesień 2011 1 / 26 Plan wykładu 1 Wstęp komputery, algorytmy i programy 2 Podstawowe
Programowanie obiektowe
Programowanie obiektowe Wykład 5 Marcin Młotkowski 23 marca 2017 Plan wykładu 1 2 3 4 5 Marcin Młotkowski Programowanie obiektowe 2 / 50 Historia Początkowe założenia Projekt OAK Sterowanie urządzeniami
Programowanie MorphX Ax
Administrowanie Czym jest system ERP? do systemu Dynamics Ax Obsługa systemu Dynamics Ax Wyszukiwanie informacji, filtrowanie, sortowanie rekordów IntelliMorph : ukrywanie i pokazywanie ukrytych kolumn
PyPy's Approach to Virtual Machine Construction
PyPy's Approach to Virtual Machine Construction Armin Rigo, Samuele Pedroni Prezentacja: Michał Bendowski Czym jest PyPy? Implementacja Pythona w Pythonie - wydajniejsza niż oryginalna implementacja w
Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),
Tworzenie obiektów Dostęp do obiektów jest realizowany przez referencje. Obiekty w języku Java są tworzone poprzez użycie słowa kluczowego new. String lan = new String( Lancuch ); Obszary pamięci w których
Szablony funkcji i klas (templates)
Instrukcja laboratoryjna nr 3 Programowanie w języku C 2 (C++ poziom zaawansowany) Szablony funkcji i klas (templates) dr inż. Jacek Wilk-Jakubowski mgr inż. Maciej Lasota dr inż. Tomasz Kaczmarek Wstęp
Java Podstawy JUST JAVA 28.03.2007. Michał Bereta Intytu Modelowania Komputerowego Wydział Fizyki, Matematyki i Informatyki Stosowanej
Java Podstawy JUST JAVA 28.03.2007 Michał Bereta Intytu Modelowania Komputerowego Wydział Fizyki, Matematyki i Informatyki Stosowanej beretam@torus.uck.pk.edu.pl http://torus.uck.pk.edu.pl/~beretam Hello
Podstawy Programowania. Wykład 1
Podstawy Programowania Wykład 1 Jak się uczyć programowania? Wykład i laboratorium Literatura Jerzy Grębosz Symfonia C++ Bjarne Stroustrup Język C++ Bruce Eckel Thinking in C++ Tony L. Hansen C++ zadania
Podstawy programowania. 1. Operacje arytmetyczne Operacja arytmetyczna jest opisywana za pomocą znaku operacji i jednego lub dwóch wyrażeń.
Podstawy programowania Programowanie wyrażeń 1. Operacje arytmetyczne Operacja arytmetyczna jest opisywana za pomocą znaku operacji i jednego lub dwóch wyrażeń. W językach programowania są wykorzystywane
1. Pierwszy program. Kompilator ignoruje komentarze; zadaniem komentarza jest bowiem wyjaśnienie programu człowiekowi.
1. Pierwszy program // mój pierwszy program w C++ #include using namespace std; cout
Microsoft Shared Source CLI
Microsoft Shared Source CLI Artur Popławski Seminarium magisterskie Zagadnienia Programowania Obiektowego Co to jest SSCLI? wirtualna maszyna, implementacja na 3 systemy data-driven architecture, in which
Programowanie obiektowe
Wykład 2 28 lutego 2019 Plan wykładu 1 2 3 4 5 Plan wykładu 1 2 3 4 5 Krótki opis C Obiektowy, z kontrolą typów; automatyczne odśmiecanie; standardy ISO i ECMA; podobny składniowo do C++; Język C Krótka
Web Services. Bartłomiej Świercz. Łódź, 2 grudnia 2005 roku. Katedra Mikroelektroniki i Technik Informatycznych. Bartłomiej Świercz Web Services
Web Services Bartłomiej Świercz Katedra Mikroelektroniki i Technik Informatycznych Łódź, 2 grudnia 2005 roku Wstęp Oprogramowanie napisane w różnych językach i uruchomione na różnych platformach może wykorzystać
Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki
Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki Object-oriented programming Najpopularniejszy obecnie styl (paradygmat) programowania Rozwinięcie koncepcji programowania strukturalnego
Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018
Informatyka I Klasy i obiekty. Podstawy programowania obiektowego dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2018 Plan wykładu Pojęcie klasy Deklaracja klasy Pola i metody klasy
Programowanie strukturalne język C - wprowadzenie
Programowanie strukturalne język C - wprowadzenie Dr inż. Sławomir Samolej D102 C, tel: 865 1766, email: ssamolej@prz-rzeszow.pl WWW: ssamolej.prz-rzeszow.pl Cechy programowania strukturalnego Możliwość
Wprowadzenie. Organizacja pracy i środowisko programistyczne. Mirosław Ochodek
Wprowadzenie Organizacja pracy i środowisko programistyczne Mirosław Ochodek Miroslaw.Ochodek@pwsz.pila.pl Miroslaw.Ochodek@cs.put.poznan.pl Dane kontaktowe Mirosław Ochodek E-mail: Miroslaw.Ochodek@pwsz.pila.pl
Zdalne wywołania procedur. Jarosław Kuchta Programowanie Współbieżne
Zdalne wywołania procedur Jarosław Kuchta Programowanie Współbieżne Podstawy RPC Remote Procedure Call Wywołanie procedur jednego procesu z innego procesu. Proces wywoływany serwer Proces wywołujący -
Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1
Podstawy programowania. Wykład Funkcje Krzysztof Banaś Podstawy programowania 1 Programowanie proceduralne Pojęcie procedury (funkcji) programowanie proceduralne realizacja określonego zadania specyfikacja
Platforma.NET laboratorium 1. Visual Basic.NET podstawowe elementy języka. Wykonanie warunkowe If End If
Platforma.NET laboratorium 1 Prowadzący: mgr inż. Tomasz Jaworski Strona WWW: http://tjaworski.kis.p.lodz.pl/ Visual Basic.NET podstawowe elementy języka Poniżej przedstawiono podstawowe instrukcje sterujące
20. Pascal i łączenie podprogramów Pascala z programem napisanym w C
Opublikowano w: WEREWKA J..: Podstawy programowana dla automatyków. Skrypt AGH Nr 1515, Kraków 1998 20. i łączenie podprogramów a z programem napisanym w Ze względu na duże rozpowszechnienie języka, szczególnie
1 Atrybuty i metody klasowe
1 Atrybuty i metody klasowe Składowe klasowe (statyczne) Każdy obiekt klasy posiada własny zestaw atrybutów. Metody używają atrybutów odpowiedniego obiektu. Czasem potrzeba atrybutów wspólnych dla wszystkich
Sprzęt komputera - zespół układów wykonujących programy wprowadzone do pamięci komputera (ang. hardware) Oprogramowanie komputera - zespół programów
Sprzęt komputera - zespół układów wykonujących programy wprowadzone do pamięci komputera (ang. hardware) Oprogramowanie komputera - zespół programów przeznaczonych do wykonania w komputerze (ang. software).
Obiektowy Caml. Paweł Boguszewski
Obiektowy Caml Paweł Boguszewski Plan prezentacji Charakterystyka języka Składnia Obiektowość w OCamlu Wyjątki Standardowe Moduły Narzędzia wspomagające Bibliografia OCaml OCaml jest obiektowym, funkcyjnym
C# - innowacja czy plagiat?
C# - innowacja czy plagiat? Piotr Kowalski Seminarium magisterskie Zagadnienia programowania obiektowego Wydział Matematyki, Mechaniki i Informatyki Uniwersytet Warszawski Agenda! Wprowadzenie do platformy.net!
Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44
Programowanie w C++ Wykład 2 Katarzyna Grzelak 4 marca 2019 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44 Na poprzednim wykładzie podstawy C++ Każdy program w C++ musi mieć funkcję o nazwie main Wcięcia
Programowanie obiektowe
Programowanie obiektowe Język programowania Ruby Marcin Młotkowski 12 kwietnia 2018 Plan wykładu 1 Wstęp 2 Typy numeryczne Łańcuchy znaków (klasa String) Przedziały Tablice i tablice asocjacyjne Nazwy
Podstawy programowania obiektowego
Podstawy programowania obiektowego Technologie internetowe Wykład 5 Program wykładu Podejście obiektowe kontra strukturalne do tworzenie programu Pojęcie klasy i obiektu Składowe klasy: pola i metody Tworzenie
Język programowania PASCAL
Język programowania PASCAL (wersja podstawowa - standard) Literatura: dowolny podręcznik do języka PASCAL (na laboratoriach Borland) Iglewski, Madey, Matwin PASCAL STANDARD, PASCAL 360 Marciniak TURBO
Pascal typy danych. Typy pascalowe. Zmienna i typ. Podział typów danych:
Zmienna i typ Pascal typy danych Zmienna to obiekt, który może przybierać różne wartości. Typ zmiennej to zakres wartości, które może przybierać zmienna. Deklarujemy je w nagłówku poprzedzając słowem kluczowym
Tworzenie i wykorzystanie usług sieciowych
Ćwiczenie 14 Temat: Tworzenie i wykorzystanie usług sieciowych Cel ćwiczenia: W trakcie ćwiczenia student zapozna się z procedurą tworzenia usługi sieciowej w technologii ASP.NET oraz nauczy się tworzyć
Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.
Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu. Dr inż. Zofia Kruczkiewicz Dwa sposoby tworzenia apletów Dwa sposoby
Język programowania DELPHI / Andrzej Marciniak. Poznań, Spis treści
Język programowania DELPHI / Andrzej Marciniak. Poznań, 2012 Spis treści Przedmowa 11 Przyjęta notacja 13 Rozdział 1. Wprowadzenie 15 1.1. Ogólne zasady programowania zorientowanego obiektowo 15 1.2. Historia
Czym jest stos i sterta?
W języku C# istnieje kilka podstawowych typów danych. Na pierwszy rzut oka nie widać między nimi żadnej różnicy, jednak pojawia się w charakterystycznych sytuacjach takich jak przekazywanie parametrów
Podstawy języka Java. przygotował: pawel@kasprowski.pl
Podstawy języka Java przygotował: pawel@kasprowski.pl Początki: PDA Star7 (*7) PDA do obsługi urządzeń domowych. (1992) (język OAK) Autorzy Javy Green Team Ojciec Javy: James Gosling Poszukiwanie zastosowania