Plan wykładu. Tworzenie programów dla platformy.net. Predefiniowane typy C# Pierwszy program. Typy wartości i typy referencyjne

Podobne dokumenty
Microsoft IT Academy kurs programowania

MATERIAŁY DO ZAJĘĆ II

Programowanie Komputerów

Języki i metodyka programowania. Język C# pętle, sterowanie, wyjątki

Programowanie w środowiskach graficznych. Wykład 3 Język C#

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Programowanie obiektowe

Klasy cd. Struktury Interfejsy Wyjątki

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1)

Języki Programowania II Wykład 3. Java podstawy. Przypomnienie

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta Strona 1 z 26. Powrót. Full Screen. Zamknij.

Programowanie obiektowe i zdarzeniowe

Kurs programowania. Wykład 13. Wojciech Macyna. 14 czerwiec 2017

Wykład 5 Okna MDI i SDI, dziedziczenie

Wykład 2 Składnia języka C# (cz. 1)

Materiały do zajęć VII

Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.)

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.

Programowanie Komputerów

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Operatory cd. Relacyjne: ==!= < > <= >= bool b; int i =10, j =20; dzielenie całkowitych wynik jest całkowity! Łączenie tekstu: + string s = "Ala ma ";

Programowanie obiektowe

Wykład 2. Różnice pomiędzy językiem C++ a C#

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Programowanie obiektowe

ROZDZIAŁ 2. Operatory

Zofia Kruczkiewicz, Programowanie obiektowe - java, wykład 2 1

Platformy Programistyczne Podstawy języka Java

SWIFT. Zaawansowane Programowanie Obiektowe

Tworzenie aplikacji w języku Java

dziedziczenie - po nazwie klasy wystąpią słowa: extends nazwa_superklasy

Programowanie Obiektowe Ćwiczenie 4

Języki programowania - podstawy

Programowanie I C / C++ laboratorium 03 arytmetyka, operatory

Podstawowe części projektu w Javie

Wprowadzenie do języka Java

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

Programowanie obiektowe

JAVA. Platforma JSE: Środowiska programistyczne dla języka Java. Wstęp do programowania w języku obiektowym. Opracował: Andrzej Nowak

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

Pętle while, for, do while, instrukcje break, continue, switch 1. Pętle

PARADYGMATY PROGRAMOWANIA Wykład 4

Język C++ wykład VIII

KOTLIN. Język programowania dla Androida

Wstęp do programowania obiektowego. WYKŁAD 3 Dziedziczenie Pola i funkcje statyczne Funkcje zaprzyjaźnione, this

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016

Metodyka programowania. Podstawy C#

Programowanie obiektowe

Podstawy programowania obiektowego

Programowanie obiektowe

Modelowanie numeryczne w fizyce atmosfery Ćwiczenia 3

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi

Podstawy Programowania Podstawowa składnia języka C++

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

Platforma.NET. Laboratorium nr 1 Podstawy języka C#

1. Co można powiedzieć o poniższym kodzie? public interface I { void m1() {}; static public void m2() {}; void abstract m3();

PROGRAMOWANIE W ŚRODOWISKU FLASH wykład 2

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Język ludzki kod maszynowy

Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.)

Wykład 4. Klasa List Kolejki Stosy Słowniki

Java: interfejsy i klasy wewnętrzne

Podstawy programowania obiektowego

Podstawy programowania obiektowego

PARADYGMATY PROGRAMOWANIA Wykład 3

C# - innowacja czy plagiat?

Operatory. Składnia. Typy proste. Znaki specjalne

Spis treści WSTĘP CZĘŚĆ I. PASCAL WPROWADZENIE DO PROGRAMOWANIA STRUKTURALNEGO. Rozdział 1. Wybór i instalacja kompilatora języka Pascal

Kurs programowania. Wykład 3. Wojciech Macyna. 22 marca 2019

Projektowanie klas c.d. Projektowanie klas przykład

Język C++ wykład VI. uzupełnienie notatek: dr Jerzy Białkowski. Programowanie C/C++ Język C++ wykład VI. dr Jarosław Mederski.

Wyjątki. Wyjątki. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Politechnika Wrocławska

wykład IV uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C, a C++. wykład IV dr Jarosław Mederski Spis Język C++ - wstęp

Programowanie aplikacji okienkowych Windows

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016

EGZAMIN PROGRAMOWANIE II (10 czerwca 2010) pytania i odpowiedzi

Programowanie strukturalne i obiektowe : podręcznik do nauki zawodu technik informatyk / Adam Majczak. Gliwice, cop

1 Podstawy c++ w pigułce.

Składnia C++ Programowanie Obiektowe Mateusz Cicheński

Podstawy programowania skrót z wykładów:

1 Podstawy c++ w pigułce.

Programowanie 2. Język C++. Wykład 3.

1 Atrybuty i metody klasowe

Programowanie obiektowe w C++ Wykład 12

Programowanie Obiektowe i C++

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 16 kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 27

Programowanie C# mgr in. Dariusz Ku. p. 119A

Podstawy programowania w języku C

Programowanie (C++) NI 5

Programowanie urządzeń mobilnych. dr inż. Andrzej Grosser na podstawie wykładu dr inż. Juliusz Mikoda

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Java Podstawy. Michał Bereta

Java Język programowania

Programowanie strukturalne i obiektowe

Wykład I. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Część 4 życie programu

Czym jest stos i sterta?

Transkrypt:

dla platformy.net Wstęp do programowania w języku C# Gliwice, Marzec 2003 Plan wykładu Typy danych i operatory Instruk cje Tablice Tworzenie klas Właściwości, indek satory Delegacje i zdarzenia mgr inż. Marek Mittmann dla platformy.net 2 Pierwszy program class Hello Console.WriteLine("Hello world!"); for (int i = 0; i < args.length; i++) Console.WriteLine("args[0] = 1", i, args[i]); dla platformy.net 3 Predefiniowane typy C# object typ bazowy string ciąg znaków Unicode byte, sbyte liczby całkowite 8-bitowe short, ushort liczby całkowite 16-bitowe int, uint liczby całkowite 32-bitowe long, ulong liczby całkowite 64-bitowe float, double liczby zmiennoprzecinkowe bool wartość logiczna (true lub false) char znak Unicode decimal liczba zmiennoprzecinkowa stałej precyzji dla platformy.net 4 Typy wartości i typy referencyjne int i = 123; string s = "Ala ma kota"; i s stos 123 sterta Ala ma kota Klasy, struktury, interfejsy Klasa ty p referencyjny (alokow ana na stercie) Struktura ty p wartości (przechowywana na stosie) brak dziedziczenia Interfejs pełni podobną rolę, co klasa abstrakcyjna dla platformy.net 5 dla platformy.net 6 1

Opakowywanie Podstawowe operatory i o int i = 123; object o = i; stos 123 sterta 123 System.Int32 Arytmet yczne: + - * / % Logiczne: & ^! ~ && true fals e Konkatenacja łańcuc hów: + Inkrementacja, dekrementacja: ++ -- Przesunięcia bitowe: << >> Porównania: ==! = < > <= >= Przypisania: = += -= *= /= % = &= = ^= <<= >>= Dostęp do składowych, indeks owanie:. [] Rzutowanie: () as Operator warunkowy:? : Tworzenie obiektów, inf ormacje o typie: new is s izeof typeof dla platformy.net 7 dla platformy.net 8 Przestrzenie nazw namespace MyNamespace namespace Inner class MyClass public static void F() using System; using NamespaceAlias = MyNamespace.Inner; Deklaracje stałych i zmiennych static void Main() // zmienne const float r = 12.5; int a = 12, b = 1; int c; // stałe const float pi = 3.14f; static void Main() c = 2; Console.WriteLine(a + b + c); NamespaceAlias.F(); Console.WriteLine(pi * r * r); dla platformy.net 9 dla platformy.net 10 Typ wyliczeniowy enum Color Red, Green = 10, Blue Color c = Color.Green; DrawBox2D(10, 20, c); DrawBox2D(12, 10, Color.Blue); dla platformy.net 11 Instrukcje warunkowe if (args.length == 0) Console.WriteLine( Brak argumentów ); else Console.WriteLine( Jest 0 argumentów, args.length); dla platformy.net 12 2

Instrukcja switch switch (args.length) case 1: case 2: Console.WriteLine( Mało argumentów ); goto case 3; case 3: UseArgs(args); break; default: Console.WriteLine( Błąd ); break; dla platformy.net 13 Pętle for (int i = 0; i < args.length; i++) Console.WriteLine(args[i]); int j = 0; while (j < args.length) Console.WriteLine(args[j++]); do Console.WriteLine(args[--j]); while (j > 0); dla platformy.net 14 Instrukcja foreach int[] tab = 2, 4, 5, 11, -2 ; foreach (int i in tab) Console.WriteLine(i); Instrukcje break i continue for (int i = 0; i < args.length; i++) if (args[i] == end ) break; if (args[i] == skip ) continue; Console.WriteLine(args[i]); dla platformy.net 15 dla platformy.net 16 Instrukcja return static int Sum(int a, int b) return a + b; Console.WriteLine(Sum(10, 1)); return; dla platformy.net 17 Wyjątki instrukcje throw i try static int Div(int a, int b) if (b == 0) throw new Exception( Dzielenie przez zero ); return a / b; try Console.WriteLine(Div(10, 0)); catch (Exception ex) Console.WriteLine( Błąd: + ex.message); dla platformy.net 18 3

Instrukcja checked int x = Int32.MaxValue; Console.WriteLine(x + 1); // Przepełnienie checked Console.WriteLine(x + 1); // Wyjątek unchecked Console.WriteLine(x + 1); // Przepełnienie dla platformy.net 19 Instrukcja lock //... internal void Produce() lock (this) // sekcja krytyczna counter++; data[counter] = NewValue(); //... dla platformy.net 20 Instrukcja using using (MyResource r1 = new MyResource(), r2 = new MyResource()) using (MyFile f1 = new MyFile()) r1.use(); r2.use(); f1.read(); // wywołanie Dispose dla r1, r2, f1 Tablice // Tablice jednowymiarowe int[] v1 = 1, 4, 5, 7, 1 ; int[] v2 = new int[10]; int[] v3 = new int[5] 1, -2, 3, -4, 5 ; v2[0] = v1[2]; v3[1] = 5; // Tablice wielowymiarowe int[,] m1 = 2, 3, 4, 4, 5, 7 ; int[,] m2 = new int[2, 3]; m2[0, 0] = -1; dla platformy.net 21 dla platformy.net 22 Tablice nieprostokątne int[][] t1 = new int[2], new int[5] ; int[][] t2 = new int[2][]; t2[0] = new int[2]; t2[1] = new int[3]; t2[0, 0] = 1; t2[0, 1] = -5; t2[1, 0] = 2; t2[1, 1] = 3; t2[1, 2] = 7; for (int i = 0; i < t2.length; i++) for (int j = 0; j < t2[i].length; j++) Console.WriteLine( [0][1] = 3, i, j, t2[i][j]); dla platformy.net 23 Operacje na tablic ach int[] arr = new int[20]; // Odwracanie Array.Reverse(arr); // Sortowanie Array.Sort(arr); // Przeszukiwanie int i1 = Array.IndexOf(arr, 5); int i2 = Array.IndexOf(arr, 5, i1 + 1); int i3 = Array.BinarySearch(arr, 10); // Kopiowanie arr.copyto(arr2); dla platformy.net 24 4

Łańcuchy tekstowe string s1 = Ala ma kota ; string s2 = c:\\temp\\myfile.dat ; string s3 = @ c:\temp\myfile.dat ; // Łańcuch // bezpośredni // Długość łańcucha int len = s1.length; // Konkatenacja s1 = s1 + i psa ; // Indeksator for (int i = 0; i < s1.length; i++) Console.WriteLine( Znak 0 = 1, i, s1[i]); dla platformy.net 25 Operacje na łańcuchach string s1 = Tekst, s2 = tekst ; // Porównanie z uwzględnieniem wielkości liter bool cmp1 = s1 == s2; bool cmp2 = String.Compare(s1, s2) == 0; // Porównanie bez uwzględnienia wielkości liter bool cmp3 = String.Compare(s1, s2, true) == 0; // Szukanie wzorca int i1 = s1.indexof( wzorzec ); // Kopiowanie wycinka łańcucha string substr = s1.substring(2, 4); // Zastępowanie znaków s1 = s1.replace( stary, dla platformy nowy );.NET 26 Klasy class Point public int x = 0, y = 0; // atrybuty public Point(int x, int y) // konstruktor this.x = x; this.y = y; public void Show() // funkcja składowa Console.WriteLine( (0, 1), x, y); dla platformy.net 27 Przekazywanie argumentów class Point public int x = 0, y = 0; public void SetXY(int x, int y) this.x = x; this.y = y; public void GetXY(ref int x, ref int y) x = this.x; y = this.y; //... Point p = new Point(); int x0 = 5, x1 = 0, y1 = 0; p.setxy(x0, 4); // Arg. przekazane przez wartość p.getxy(ref x1, ref y1); //... przez zmienną dla platformy.net 28 Przeciążanie nazw funkcji class Point public int x = 0, y = 0; public Point(int x, int y) this.x = x; this.y = y; public Point(Point p) x = p.x; y = p.y; dla platformy.net 29 Dziedziczenie class GraphObject Point: GraphObject public int x = string 0, y = name; 0; public GraphObject(string Point(string name, name) int x, int y): base(name) this.name = name; this.x = x; this.y = y; public void Show() public void Show() Console.WriteLine( (0, 1), x, y); dla platformy.net 30 5

Funkcje wirtualne class GraphObject Point: GraphObject public int x = string 0, y = name; 0; Klasy abstrakcyjne abstract class GraphObject public string name; public GraphObject(string Point(string name, name) int x, int y): base(name) this.name = name; this.x = x; this.y = y; // Metoda wirtualna public virtual override void Show() // Metoda wirtualna Console.WriteLine( (0, 1), x, y); dla platformy.net 31 public GraphObject(string name) this.name = name; // Metoda abstrakcyjna public abstract void Show(); dla platformy.net 32 Interfejsy interface IGraphObject void Show(); class Point: IGraphObject //... public void Show() Console.WriteLine( (0, 1), x, y); //... Point p = new Point(2, 5); IGraphObject graphobj = p as IGraphObject; if (graphobj!= null) graphobj.show(); dla platformy.net 33 Jawna implementacja interfejsu interface IOne void Execute(); interface ITwo void Execute(); class Tester: IOne, ITwo void IOne.Execute() /*... */ void ITwo.Execute() /*... */ dla platformy.net 34 Dostępność składowych M odyfikatory dostępności klasy internal dostępna tylko wewnątrz podzespołu public widoczna w innych podzespołach M odyfikatory dostępności składowy ch klasy public widoczne wszędzie protected dostępne w klasach pochodnych private tylko w danej klasie internal tylko w obrębie podzespołu internal protected dostępne w podzespole i w klasach pochodnych dla platformy.net 35 Finalizatory class ResourceWrapper int handle = 0; ResourceWrapper() handle = GetWindowsResource(); ~ResourceWrapper() // Finalizator // Nie wiadomo, kiedy będzie wywołane!!! FreeWindowsResource(handle); dla platformy.net 36 6

Interfejs ID isposable class ResourceWrapper: IDisposable /*... */ private void DoDispose() FreeWindowsResource(handle); handle = 0; public void Dispose() DoDispose(); GC.SuppressFinalize(this); Instrukcja using using (MyResource r1 = new MyResource(), r2 = new MyResource()) using (MyFile f1 = new MyFile()) r1.use(); r2.use(); f1.read(); // wywołanie Dispose dla r1, r2, f1 ~ResourceWrapper() DoDispose(); dla platformy.net 37 dla platformy.net 38 Składowe statyczne class GraphObject static int counter = 0; string name; public GraphObject() counter++; this.name = GraphObject + counter.tostring(); public static void ResetCounter() counter = 0; dla platformy.net 39 Właściwości class Point string name; int x = 0, y = 0; public string Name get return name; public int X get return x; set x = value; dla platformy.net 40 Indeksatory class Worksheet CellValue[,] cells = new CellValue[20,20]; public CellValue this[string col, int row] get return data[row, ColToIndex(col)]; set data[row, ColToIndex(col)] = value; /*... */ Worksheet sheet = new Worksheet(); sheet[ A, 10] = =A1+B1 ; dla platformy.net 41 Przeciążanie operatorów class Complex double re = 0, im = 0; public Complex(double re, double im) this.re = re; this.im = im; public static Complex operator+(complex c1, Complex c2) return new Complex(c1.re + c2.re, c1.im + c2.im); dla platformy.net 42 7

Delegacje delegate void MyDelegate(string arg); static void F1(string arg) Console.WriteLine( F1( 0 ), arg); static void F2(string arg) Console.WriteLine( F2( 0 ), arg); MyDelegate fx = new MyDelegate(F1); fx += new MyDelegate(F2); fx(args[0]); // Wywołanie funkcji wskazywanych // dla przez platformy delegacje.net 43 Zdarzenia delegate void ClickHandler(); class Button public event ClickHandler Click; public void PerformClick() Click(); /*... */ public static void OnClick() /*... */ static void Main() Button bt = new Button(); bt.click += new ClickHandler(OnClick); bt.performclick(); dla platformy.net 44 Dziękuję za uwagę 8