1 / 196

Język C# ( 4.0 ) using System; namespace HeWo { class Hello {

Język C# ( 4.0 ) using System; namespace HeWo { class Hello { static void Main( string [] args) { Console.WriteLine("Hello World!"); } } }. Typy Danych wartości ( stos , pełne kopiowanie ) logiczne numeryczne egzemplarze struktur

maile-payne
Download Presentation

Język C# ( 4.0 ) using System; namespace HeWo { class Hello {

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Język C# ( 4.0 ) using System; namespace HeWo { classHello { staticvoid Main(string[] args) { Console.WriteLine("Hello World!"); } } }

  2. Typy Danych • wartości ( stos , pełne kopiowanie ) • logiczne • numeryczne • egzemplarze struktur • referencje ( sterta , kopiowanie referencji ) • obiekty klas • tablice • ciągi znaków ( string )

  3. Type C# CTSCLS Bytes Default bool Boolean Y1false byteByte Y 1 0 sbyte SByte N 1 0 shortInt16 Y 2 0 intInt32 Y 4 0 longInt64 Y 8 0 ushort UInt16 N 2 0 uintUInt32N 4 0 ulong UInt64 N 8 0 floatSingle Y 4 0.0 double Double Y 8 0.0 charChar Y 2 0 decimal Decimal Y 160.0

  4. Deklaracje i definicje zmiennych int Alfa , Beta , Gamma = 5 ; Operator przypisania wartości Beta = Gamma; // OK Beta = 12; // OK Beta = Alfa; // błąd kompilacji Stałe const double Kurs = 3.857 ;

  5. Typy implikowane (3.0) var a = 5;// int varb = 'K';// char var c = 128L; // long var d = 15.332; // double vare = "Ala ma kota";// string a = 4654434L;// long -> int e = 4.5; // błąd ● tylko zmienne lokalne w funkcjach - nie mogą być składowymi klas

  6. Rzutowanie • ·automatyczne • - rozszerzające ( bez ostrzeżenia ) • - zawężające ( błąd kompilacji ) • ·wymuszone • (int) LongValue; • int li32 = 5; • long li64; • li64 = li32; // OK. • li32 = li64; // błąd kompilacji • li64 =100111222333; • li32 = (int) li64; // błędna wartość • // 1236974525

  7. Typy rozszerzone ( nullable ) (2.0) double? Cena; // { numbs, INF, NaN, null } // Cena = 7.54 ; // Cena = null ; // if ( Cena.HasValue ) Cena += 1.4;

  8. ·operator ?? int Parametr; int? Pomiar = null; /* . . . . . . . .*/ Parametr = Pomiar ?? 100 ; // string str = null; /* . . . . . . . .*/ Console.WriteLine( str ?? "Pusty" );

  9. Opakowanie –Rozpakowanie long aaa = 1234567890 , bbb ; object objLong = aaa ; // stos  sterta bbb = (long) objLong ; // sterta  stos // InvalidCastException

  10. Typ logiczny bool dobrze; int alfa = 5; dobrze = 0; // błąd dobrze = 3 * alfa + 1; // błąd dobrze = true; // OK dobrze = alfa > 10; // OK

  11. Typy wyliczeniowe enum Wyliczanka // int {Eme, // == 0 Due, // == 1 Fake = 10, //== 10 Drake // == 11 } enum Maly : byte// byte { mini , mikro } ·dziedziczenie z System.Enum Enum.IsDefined(typeof(Maly) , "nano");

  12. Funkcje i właściwości typów • ·zmienne typów będących wartościami sąegzemplarzamistruktur dziedziczą funkcje z typu • System.Object.ValueType • ─    GetType( )// obiekt Type określający typ • dla typów wyliczeniowych (np. ConsoleColor) : • var ListaKolorów = // tablica stałych • Enum.GetValues(ConsoleColor.Black.GetType()); • ─    ToString( )// konwersja binarno – znakowa • long LoVal = 15342443 ; • string Characters = LoVal.ToString ( );

  13. · właściwości typów liczbowych MaxValue // wartość maksymalna MinValue // wartość minimalna long x = long.MaxValue; int y = int.MinValue;

  14. Łańcuchy znaków UNICODE(UTF - 16) ·stringtyp referencyjny ·zawartość łańcucha niezmienna ·dziedziczy z typu System.String Length, Concat, CompareTo, Copy, Insert , PadLeft , PadRight , Remove , Replace , ToLower , ToUpper , Format = , + , == , != , [ ] string Nap1 , Nap2 = "dobry napis" ; Nap1 = Nap2 ; // nowa referencja Nap1 = Nap2.ToUpper( ); // nowy łańcuch

  15. ·znaki sterujące jak w C ( @ wyłącza przetwarzanie ) stringOpis1 = "\nWyniki\t:" ; stringOpis2 = @"\nBez zmian\t:" ; Przekształcanie wnętrza łańcucha ·klasa System.Text.StringBuilder using namespace System.Text; StringBuilder myBuffer = new StringBuilder ("Ala ma kota"); myBuffer.Append(„a Ola psa."); myBuffer.Insert(11, ','); string Ready =myBuffer.ToString(); // Ala ma kota, a Ola psa.

  16. Wprowadzanie – wyprowadzanie danych ·klasa System.Console ─    int Read ( )// 1 znak (NL, -1) ─    string ReadLine ( ) // do NL ─   string Write ( string ) // bez NL ─string WriteLine ( string ) // z NL // Console.WriteLine( x.ToString() ); Console.WriteLine( x ); // konwersja Console.WriteLine( x.ToString() + ", " + y.ToString() );

  17. Console.Write ("format", w,..,w) // bez NL Console.WriteLine ("format", w,..,w) // z NL format  "zzz{0}zzz{1}zzz{0}zzz{2}zzz..." ─ "zzz" dowolny ciąg znaków (może być pusty) ─ {0} {1} {2} ... pozycje kolejnych dalszych argumentów ─  w,...,w ciąg wyrażeń 0

  18. znak znaczenie C c waluta (wg. Windows) D d całkowite dziesiętne E e notacja wykładnicza F f niecałkowite dziesiętne z wykładnikiem lub bez G g N n format narodowy X x postać heksydecymalna ·można stosować znaki formatujące{K:Zs} lub {K,P:Zs} ─    K numer pozycji ─    Z znak formatujący ─    P szerokość pola ─    s liczba cyfr po kropce

  19. int ii = 34; double dd = 2.52345324 ; string str = "\nOpis wyniku :\t" ; Console.WriteLine( "{0} {1} albo {1,12:D} i {2} lub\n " +"{2,-15:F3} lub {2:E5} lub {3} " , str , ii , dd , dd.ToString() ) ; //Opis wyniku : 34 albo 34 i 2,52345324 lub // 2,523 lub 2,52345E+000 lub 2,52345324

  20. ·konwersja znakowo – binarna(kultura - ustawienia narodowe) - SystemType.Parse(string) string str; double dd = 2.5; str = Console.ReadLine();// 12,45 dd = double.Parse(str); // błędny format -> błąd wykonania Console.WriteLine(dd); // 12,45

  21. bool dobrze = false; string str; double dd = 2.5; while ( ! dobrze ) { str = Console.ReadLine(); dobrze = double.TryParse(str, out dd); } Console.WriteLine(dd); // VS.NET 2005

  22. -klasa Convert ToByte ToSByte ToChar ToDecimal ToDouble ToSingle ToInt16 ToInt32 ToInt64 ToUInt16 ToUInt32 ToUInt64 ToString string st; longwar; str = Console.ReadLine();// 124534567043 war = Convert.ToInt64(str);// format Console.WriteLine(war); // 124534567043

  23. ·kultura (ustawienia narodowe) -związana z każdym procesem obliczeniowym (wątkiem) -klasa CultureInfo using System.Threading; using System.Globalization; // CultureInfo ci = new CultureInfo("de-DE"); Thread.CurrentThread.CurrentCulture = ci;

  24. ·przesuwanie kursora // VS.2005 Console.CursorVisible = false; Console.ForegroundColor = ConsoleColor.Red; Console.BackgroundColor = ConsoleColor.White; Console.CursorLeft = X;// od lewej Console.CursorTop = Y;// od góry Console.SetCursorPosition( X, Y ); Console.Write("+");// o 1 w prawo Console.CursorLeft = X; // powrót Console.Clear();

  25. ·znaki sterujące ConsoleKeyInfo znak; // znak = Console.ReadKey(); if( ConsoleKey.UpArrow == znak.Key) { .... } // Backspace, Home, End, Enter, Escape // Arrows, Fxx, klawiatura numeryczna // Play, Volume, ... Console.Beep( 3000, 1000 ); // 3000 Hz, 1000 ms Call, S0, Kultura,Move

  26. Wyrażenia arytmetyczne i logiczne • ·operatory i zasady tworzenia jak w C++ • ·dodatkowo is as oraz => • ·konwersja wartości • - rozszerzająca  automatycznie • - zawężająca  błąd • int a = 2L; // błąd • float f = 2.45; // błąd • ·rzutowanie • ( typ ) wyrażenie

  27. ·lokalne testowanie poprawności checked // typy całkowitoliczbowe int a1 = 2000000000; a1 = a1 + 2000000000; // -294967296 a1 = checked ( a1 + 2000000000 ); // wyjątek long l1 = 5000000000; a1 = l1; // błąd kompilacji a1 = ( int ) l1; // -294967296 a1 = checked ( ( int ) l1 ); // wyjątek

  28. ·globalne testowanie poprawności Properites / Build / Advance Check for arithmetic overflow/underflow ·lokalne wyłącznie testowania unchecked int a1 = 2000000000; a1 = a1 + 2000000000; // wyjątek a1 = unchecked ( a1 + 2000000000 ); -294967296 +

  29. Instrukcje ·warunkowe if .. else// jak C++ // warunek  wyrażenie logiczne if ((x + 4) > 1 && (y++ < 8)) // || // obliczenie optymalizowane if ((x + 4) > 1 & (y++ < 8)) // | // pełne obliczenie // switch// jak C++ // instrukcja break konieczna

  30. ·pętle ( ogólnie jak C++ ) for ( int i = 1 ; i < 5 && dalej ; ++i) { ....... } // koniec widoczności zmiennej i while , do ... while// jak C++ foreach// wymagany IEnumerator

  31. modyfikator opis public dostępne zewsząd (domyślny) private tylko wewnątrz struktury / klasy protected dla klas dziedziczących internal tylko w pakiecie protected internal dla klas dziedziczących w pakiecie Struktury ·są zawsze wartościami (na stosie, kopiowanie) ·mogą zawierać interfejsy, funkcje składowei konstruktory z argumentami ·są zawsze zapieczętowane ·modyfikatory dostępu do pól

  32. public struct Osoba { public string Imie; public string Nazwisko; public long Pesel; } Osoba Prezes; Prezes.Imie = "Adam" ; Prezes.Nazwisko = "Betoński" ; Prezes.Pesel = 54031203287; Osoba Emeryt ; Emeryt = Prezes ;

  33. ·pakowanie i rozpakowanie object Agent = Emeryt; // sterta, brak dostępu do pól long kto = Agent.Pesel; // błąd Osoba X_007 = ( Osoba ) Agent ; // stos, jest dostęp do pól kto = X_007.Pesel; // OK

  34. public structKomputer { public stringMarka; public shortCena; public Komputer (string mm, short cc) { Marka = mm; Cena = cc; } } object PC = new Komputer ( "Alfa", 3000 ); short cc = PC.Cena; // błąd Komputer komp = (Komputer) PC; cc = komp.Cena; // OK

  35. Tablice ·jednowymiarowe int [ ] Tab_A ; // zmienna referencyjna Tab_A = new int [ 120 ] ; // 0 ... 119 // automatyczne zerowanie string [ ] Tab_B = new string [ X + 5 ] ; // automatycznie NULL

  36. string [ ] Tab_D = new string [ 3 ] { "Alfa", "Beta", "Gamma" }; double [ ] Tab_C = { 1.2 , 4.5 , 4.4 } ; // Tab_A [ 0 ] = 55 ; Tab_D [ 2 ] = "Jota" ; // System.IndexOutOfRangeException var T = new double[]{1.1, 2.2, 3.3}; // tylko jako tablica lokalna w funkcji

  37. ·wielowymiarowe, pełne int [ , ] Mat = new int [ 9 , 7 ] ; Mat [ 3 , 5 ] = 121 ; // int [ , ] T23 = {{1,2,3},{4,5,6}}; // var T2 = new long[,] { { 10, 20, 30 }, { 100, 200, 300 } }; // tylko jako tablica lokalna w funkcji

  38. ●       wielowymiarowe, niepełne long [ ] [ ] Arr = new long [ 5 ] [ ] ; // zadana liczba wierszy, // zmienna liczba kolumn w wierszu for ( int i = 0 ; i < Arr.Length ; ++i ) Arr [ i ] = new long [ i + 5 ] ; Arr [ 2 ] [ 3 ] = 12212212234543 ;

  39. · kopiowanie tablic int[] T = { 1, 3, 5, 7, 9 }; int[] R = new int [10]; R = T; // kopiowanie referencji, R ma 5 elementów T[0] = 99; // zmiana wartości R[0] R = (int[]) T.Clone(); // kopia T T[1] = 88; // R[1] bez zmian int[] S = new int [10]; T.CopyTo( S, 2 ); // kopiowanie elementów T -> S od elementu 2

  40. ·dziedziczenie z System.Array właściwości Length Range : [ ] 0 ; [ , ] wie : 0, kol : 1 [ , , ]  ma : 0, wie : 1, kol : 2 funkcje BinarySearch , Clear , Clone, CopyTo GetLength, GetLowerBound , GetUpperBoundGetValue , SetValue , Reverse , Sort

  41. int x=0; Array A3D = Array.CreateInstance(x.GetType(),12,15,24); //Range = 0, 1, 2 : M, W, K for (int i = A3D.GetLowerBound(0); i <= A3D.GetUpperBound(0); ++i)// M for (int j = A3D.GetLowerBound(1); j <= A3D.GetUpperBound(1); ++j)// W for (int k = A3D.GetLowerBound(2); k <= A3D.GetUpperBound(2); ++k) // K A3D.SetValue((i * 100 + j * 10 + k),i,j,k);

  42. Console.WriteLine("MultidimensionalArray:"); Console.WriteLine("Rank\tLower\tUpper"); for (int i = 0; i < A3D.Rank; ++i)Console.WriteLine("{0}\t{1}\t{2}", i,A3D.GetLowerBound(i),A3D.GetUpperBound(i)); MultidimensionalArray: RankLowerUpper 0 0 11 1 0 14 2 0 23

  43. string [ ] Napisy = new string [ 10 ]; /* . . . . . . . . . . . */ foreach ( string s in Napisy ) { Console.Writeline( s ); } // interfejs IEnumerator jest dostępny S1, MatMul, Taba, Ewide

  44. modyfikator opis ( brak ) przez wartość ( kopiowanie ) , argument aktualny musi być zainicjowany out przez referencję, argument aktualny może być niezainicjowany ref przez referencję, argument aktualny musi być zainicjowany params zmienna liczba parametrów Funkcje ·tylko funkcje składowe klas ·niepotrzebne deklaracje ( zapowiedzi ) ·modyfikatory argumentów

  45. public long F ( long p1 , out int p2 , ref double p3 ) { ... = ... p1 ... p3 ... ; ........... p2 = ....... ; ........... p3 = ....p1 ... p2 ... ; ........... return .... ; }

  46. long wynik , a1 = 229977446633 ; int rezultat ; double zmiana = 21.4E5 ; wynik = F (a1 + 1L, out rezultat , ref zmiana); /* nawet gdyby zmienna rezultat miała nadaną wartość przed wywołaniem F, to i tak w funkcji F nie wolno odczytywać tej wartości przed wewnętrznym ustaleniem wartości p2 */ EwideF

  47. ·dowolna liczba parametrów – params public void DoLi (ref int Suma, params int [ ] Liczby) { foreach (int li in Liczby) Suma += li; } // int Wynik = 174; DoLi ( ref Wynik, 3, 5, 22, -7, 12); // 209

  48. ·wzorce funkcji ( generics ) public void PoLi <TyDa>(params TyDa [ ] Liczby) { foreach (TyDa li in Liczby) Console.WriteLine(li.ToString()); // Suma + li; niepoprawne // jedynie przypisanie = } // PoLi <double> (231.43, 99.89, - 15.2321);

  49. public TMała < T > (T p1, T p2) where T :System.IComparable< T > { T pom; if ( p1.CompareTo( p2 ) < 0 ) pom = p1; else pom = p2; return pom; } // p1 < p2  błąd double x; x = Mała <double> (231.43, 99.89);

  50. ·wartości domyślne i argumenty nazwane ( 4.0 ) public long FU ( long p1 , bool p2 = true , double p3 = 2.7 ) { ... } // long lili; lili = FU ( 127 ); // poprawnie lili = FU ( 127, false ); // poprawnie lili = FU ( 127, false, 3.9 ); // poprawnie lili = FU ( 127, , 3.9 ); // błąd lili = FU ( 127, 3.9 ); // błąd lili = FU ( 127, p3 : 3.9 ) // poprawnie NamedPar, Refa

More Related