1 / 48

C # Fundamentals Բազային տարրեր

C # Fundamentals Բազային տարրեր. Դասախոսություն ներ 1 -2. C#. Բովանդակությունը. Հիմնական հասկացություններ . .Net Framework միջավայր և C Sharp (C#) լեզու Նախապրոցեսորներ Անունների տիրույթ Տվյալների ներկառուցված տիպերը ` չ ափային և հղումային տիպեր

umed
Download Presentation

C # Fundamentals Բազային տարրեր

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. C # FundamentalsԲազային տարրեր Դասախոսություններ 1-2. C#

  2. Բովանդակությունը • Հիմնականհասկացություններ. .Net Framework միջավայր և C Sharp(C#) լեզու • Նախապրոցեսորներ • Անունների տիրույթ • Տվյալների ներկառուցված տիպերը` չափային և հղումային տիպեր • Օգտագործողի կողմից սահմանվող տիպեր. կառուցվածք և դաս, դրանց տարբերությունը • Փոփոխականներ • Հաստատուններ. թվային լիտերալներ, տողային և սիմվոլային հաստատուններ, թվարկումներ

  3. Բովանդակությունը(շար.) • Ծրագրերի կազմակերպումը Console միջավայրում • Console դասի միջոցով մուտքի և ելքի կազմակերպում • Ձևափոխման դասեր • Պայմանական կառուցվածքներ • Ցիկլիկ կառուցվածքներ • Ընտրման կառուցվածք

  4. Ծրագրավորման C Sharp լեզվի դիրքը այլ լեզուների շարքում • Դ. Ռիչին (Dennis MacAlistair Ritchie)Bell Labs ընկերությունում 1969-1973 ստեղծեց C լեզուն • Բ. Ստրաուստրուպը (Bjarne Stroustrup)Bell Labs ընկերությունում 1980-1985 ստեղծեց C++ լեզուն • Ջ. Գոսլինգը (James Gosling) Sun Microsystems ընկերությունում 1995-1996 ստեղծեց Java (Oak) լեզուն • Ա. Հեյլսբերգը (Anders Hejlsberg) Microsoft ընկերությունում 1998-2001ստեղծեց C# լեզուն

  5. .Net Framework միջավայր • .Net Framework բազային FCL դասերի գրադարանը պարունակող ամբողջական միջավայր է, որը թույլ է տալիս պլատֆորմից անկախ ծրագրի ստեղծում • CLI / CLR (Common Language Infrastructure / Common Language Runtime) – նույն Virtual Java Machine-ը Java-ում • MS IL / CLS (Common Language Specification / Microsoft Intermediate Language) – միջանկյալ լեզու, byte կոդը Java-ում

  6. Լեզվի տարբերակները

  7. Այլ կոմպիլյատորներ C# լեզուն ստանդարտացված է ECMA (ECMA-334) և ISO (ISO/IEC 23270) ստանդարտներով, որոնց համաձայն, բացի Microsoft ընկերության հայտնի կոմպիլյատորներից մշակվում են 3 կոմպիլյատորներ ևս. • Mono, մշակումը սկսել էXimian ընկերությունը, իսկ հետագայում այն շարունակվել էNovell ընկերության կողմից • dotGNU և Portable.NET, մշակվում էFree Software Foundation կազմակերպության կողմից

  8. C# լեզվի csc.exe կոմպիլյատոր • Ելքային File.exe աշխատանքային ֆայլի ստեղծում File.cs ծրագրային կոդի հիման վրա.csc File.cs • Ելքային File.dll գրադարանի ստեղծում File.cs ծրագրային կոդի հիման վրա.csc /target:library File.cs • Ելքային My.exe աշխատանքային ֆայլի ստեղծում File.cs ծրագրային կոդի հիման վրա. csc /out:My.exe File.cs • Ընթացիկ թղթապանակի բոլոր C# ֆայլերի միավորում File2.exe ֆայլում` հայտարարված DEBUG մակրոսով և օպտիմալացման առաջադրմամբ. csc /define:DEBUG /optimize /out:File2.exe *.cs • Ընթացիկ թղթապանակի բոլոր C# ֆայլերի միավորում File2.dll գրադարանում` մշակման համար նախատեսված տվյալներով և առանց զգուշացումների ու կոմպիլյատորի մասին տվյալների արտածման. csc /target:library /out:File2.dll /warn:0 /nologo /debug *.cs • Ընթացիկ թղթապանակի բոլոր C# ֆայլերի միավորում Something.xyz գրադարանում (DLL). csc /target:library /out:Something.xyz *.cs

  9. csc-ի պարամետրերի ցանկ • /optimizeՄիացնում/անջատում է ծրագրային կոդի օպտիմալացումը • /outԵլքային ֆայլի անվան առաջադրում • /platformԵլքային պլատֆորմի առաջադրում` x86, Itanium, anyproc • /targetԵլքային ֆայլի ձևատեսակի նշում /target:exe, /target:library,/target:module, /target:winexe. • /debug Մշակման տվյալներ պարունակող ֆայլի ստեղծում • /fullpathsԵլքային ֆայլի ամբողջական ուղու առաջադրում • /nowarnԶգուշացումների անտեսման առաջադրում • /warnԶգուշացումների մակարդակի առաջադրում • /warnaserrorԶգուշացումն որպես սխալ ներկայացնելու թույլտվություն • /defineՆախապրոցեսորային մակրոսների հայտարարում • /link Հասանելի COM-երի տվյալները նախագծի շրջանակում • /?stdout-ում ցույց է տալիս csc-ի պարամետրերի ցուցակը • /langversionՕգտագործվող լեզվի տարբերակի առաջադրում • /mainMain մեթոդի տեղի նշում` դասի անվան նշում • /nologoԱնջատվում է csc-ի մասին տվյալների արտածումը • /recurseՄիավորում է թղթապանակներ (գտնվում են ֆայլերը) • /unsafeՉպաշտպանված կոդի օգտագորման թույլտվություն

  10. Հիմնական հասկացություններ • Բանալի բառ (keyword) – լեզվի մաս կազմող բառ (if, for, int, static և այլն) • Նույնարկիչկամ իդենտիֆիկատոր (identifier) – օգտագործողի կողմից սահմանվող բառ (main, x12, @int, x_y) • Արտահայտություն (expression) – մաթ.նկարագրություն (x+y, x-y) • Գործողություն (statement) – կատարվող հրամաններ, որոնք իրարից բաժանվում են կետ-ստորակետով (x++; y = x;) • Օպերատոր (operator) – արտահայտության մեջ կիրառվող նշան (+, -, ++, !, ==, !=, =) • Մեկնաբանություն (comment) – ծրագրի մաս չկազմող գրառում ( /* */, // , ///) • Լիտերալ (literal) –հաստատուն (10, .2, 5F, ‘a’, “hello”)

  11. Մեկնաբանություն • C type comment /* */ int x = 1; /* sa meknabanutyunn e ev ajn grvats e mi qani toxum*/ int y = 2; /*some comment */ y = y+x; • C++ type comment // int x = 0; // some comment • XML comment /// <summary> some comment </summary>

  12. Նախապրոցեսորների ցանկ • #define – նախապրոցեսորը հայտարարում է անուն` մակրոս, • #if – ստուգում է` տրված անունն արդյոք հայտարարված է #define նախապրոցեսորով, • #elif – հանդես է գալիս #if նախապրոցեսորի հետ, եթե մեկ այլ մակրոսի ստուգելու անհրաժեշտություն է առաջանում, • #else - հանդես է գալիս #if նախապրոցեսորի հետ, եթե անունները հայտարարված չեն, • #endif – ցույց է տալիս #if նախապրոցեսորի ավարտը, • #undef – գործածությունից հանում է հայտարարված անունը, • #line – փոխում է ծրագրի կոդը պարունակող ֆայլի անունն ու տողի համարակալումը` կոմպիլյացիայի հուշումը տվյալ անունով և համարով ներկայացնելու համար, • #error – կոմպիլյացիայի արդյունքում տվյալ տողը ներկայացվում է որպես սխալ ծրագրային կոդ, • #warning – կոմպիլյացիայի արդյունքում տվյալ տողը ներկայացվում է որպես սխալի մասին զգուշացում, • #pragma – փոխում է զգուշացման տեղեկացնելու պարամետրը, • #region – ցույց է տալիս թաքցնելու նախատեսված նշիչի սկիզբը, • #endregion – ցույց է տալիս թաքցնելու համար նախատեսված նշիչի` #region նախապրոցեսորի ավարտը:

  13. Նախապրոցեսորներ (օրինակ) #define DEBUG #if DEBUG Console.WriteLine(“DEBUG info: x = {0} result is {1}”, x, b); #elif RELEASE // ... Ծրագրային կոդ #else Console.WriteLine(“info: x = ” + x); #endif #undef DEBUG #if DEBUG && RELEASE #error “NOT CORRECT SIMULTANEOUS DEFINITIONS” #endif

  14. Նախապրոցեսորներ (օրինակ) #if DEBUG #warning “DEBUG must be removed!!!” #endif #line 164 “new.cs” // ... Ծրագրային կոդ #line default #pragma warning disable 169 // ... Ծրագրային կոդ #pragma warning restore 169 #region MY_CLASSES // ... Ծրագրային կոդ #endregion

  15. Անունների տիրույթ namespace MyNamespace { class A{} } namespace MyGlobalNamespace { namespace MyClassSet { namespace MyOtherClasses { class A{} } } } namespace MyGlobalNamespace.MyClassSet.MyOtherClasses { class A{} }

  16. Անունների տիրույթ using MyGlobalNamespace.MyClassSet.MyOtherClasses; class Test { public static void Main() { A ob = new A(); MyNamespace.A ob1 = new MyNamespace.A(); } }

  17. Կեղծ անուններ using MyNamespace; using MyOtherNamespace = MyGlobalNamespace.MyClassSet.MyOtherClasses; class Test { public static void Main() { A ob = new A(); MyOtherNamespace.A ob1 = new MyOtherNamespace.A(); } }

  18. Stack և Managed heap հիշողության տիրույթներ Ստեկը այն հիշողությունն է, որում ստեղծվում են լոկալ փոփոխականները` ներդրված չափային տիպի կամ հղումները: Այդ փոփոխականները հեռացվում են ստեկից, երբ փոփոխականի տեսանելիության տիրույթը (բլոկի ավարտին {/*բլոկի մարմին*/}) ավարտվում է: Կառավարվող հիշողությունում ստեղծվում են օբյեկտները կամ այն փոփոխականները, որոնց ցույց տվող հղումներ կան ստեկում: Դրանք հեռացվում են հիշողությունից, եթե նրանց վար ցույց տվող որևէ հղում չկա ստեկում:

  19. Չափային և հղումային ստանդարտ տիպերը C#-ում և .Net Framework-ում

  20. Տիպերի թվային տիրույթը

  21. Տիպից տիպ փոխաբերում

  22. Օգտագործողի սահմանած տիպեր • Կառուցվածքի հայտարարում struct <կառուցվածքի_անուն> { // Կառուցվածքի մարմին; } Օրինակ` struct s { /*...*/ } • Դասի հայտարարում class <դասի_անուն> { // Դասի մարմին; } Օրինակ` class c { /*...*/ }

  23. Փոփոխականի հայտարարում <տիպ> <նույնարկիչ> [ =<արժեք կամ օբյեկտ>]; • Չափային տիպ int x; float f = .25F; bool b = true; //false char c = 'a'; • Հղումային տիպ string s; // reference string s = "My String"; // ref = string string s = String.Empty; // ref = empty string object o = new object(); // ref = object

  24. Փաթեթավորում • Օբյեկտի ստեղծման ընդհանուր տեսքը. new <օբյեկտի_տիպ>([<արգումենտների_ցանկ>]); Օրինակ` new int( ); new int?( ), new string( ); • Չափային տիպերին համարժեք հղումային տիպեր. int x = new int(10); // ref = object int? x1 = new int?(10); // ref object int? x2 = 20; // can’t compile • Փաթեթավորումև ապափաթեթավորում. int x = 5; object ob = x; // boxing int y = (int) ob; // unboxing

  25. Հաստատուններ C# լեզվում հաստատուններ են • Թվային հաստատունը (լիտերալ) • Սիմվոլային հաստատունը • Տողային հաստատունը • Թվարկումը

  26. Թվային հաստատուններ • Թվային լիտերալները կամ թվային հաստատունները` թվեր են, ինչպես օրինակ. 5, 1000, 10.2, 1.33 և այլն: 10 - տասական թիվ: 0x0A – տասնվեցական թիվ (10 տասական համակարգում) 5F, 15L, -1.8, .8 և այլն:

  27. Տողային և սիմվոլային հաստատուններ • հատուկ սիմվոլային շարքի \n – տողի վերջ \\ – \ սիմվոլ \" – " սիմվոլ \' – ' սիմվոլ \0 – տող հատատունի ավարտ • Օրինակներ` string s1 = “this is a string.”; // this is a string. string s2 = “\”2nd string\”\n”; // “2nd string” ևնորտողիանցում string s3 = @“\”2nd string\”\n”; // \”2nd string\”\n կամ char c1 = ‘a’; // a char c2 = ‘\”’; // “ char c3 = ‘ա’; // ա

  28. Թվարկում enum <թվարկման_անուն> [: <ներդրված_տիպ>] { <արժեքի_անուն1> [ = <արժեք1>], <արժեքի_անուն2> [ = <արժեք2>], . . . <արժեքի_անուն3> [ = <արժեք3>] }

  29. Թվարկում (օրինակ) // System.Enum public enum Colour [: uint] { Red, Green = 5, Yellow = 9, None } public static void Main() { Colour col = Colour.Green; System.Console.WriteLine(“{0} value is {1}“, col.ToString(), (uint)col); }

  30. Ծրագրի գլխավոր մեթոդը Main մեթոդի ընդհանուր տեսքերը. static void Main( ) { } static void Main(string[ ] args) { } static int Main( ) { return 0; } static int Main(string[ ] args) { return 0; }

  31. Պարզագույն ծրագիրը Console միջավայրում using System; namespace FirstProject { class Program { static void Main(string[] args) { Console.WriteLine(“Hello World!”); } } }

  32. Մուտքի/Ելքի հոսքեր using System; class Test { public static void Main() { string str = Console.ReadLine(); System.Console.WriteLine(str); int x = 10; int y = 20; Console.Write(“x=”+x.ToString()+”\n”); Console.WriteLine(“x={0} y={1}\n”, x, y); } }

  33. Ձևափոխման ֆունկցիաներ string str = “16”; int x = Convert.ToInt32(str); string s = Convert.ToString(x); string s = x.ToString(); Int32.Parse կամ int.Parse Int32.TryParse կամ int.TryParse int x; String str = “25”; bool b = Int32.TryParse(str, out x);

  34. Օպերատորների առաջնահերթությունները

  35. Բանալի բառերից կազմված օպերատորները • Ընտրման օպերատորներ (if else, switch case) • Ցիկլի օպերատորներ (for, foreach, while, do, in) • Անցման կամ թռիչքի օպերատորներ (break, continue, goto, yield, throw) • Ստուգման օպերատորներ (checked unchecked) • Չպաշտպանված կոդի օպերատորներ (fixed, satckalloc) • Սինքրոնացման օպերատորներ (lock) • Տիպերի հետ աշխատող օպերատորներ (is, as, new) և այլն:

  36. Բազային կառուցվածքներ Բազային կառուցվածքները լինում են. • Գծային • Ճյուղավորված • Ցիկլիկ Ընտրման կառուցվածքներ և օպերատորներ • if else պայմանի կամ ընտրման կառուցվածք • switch case բազմակի ընտրման կառուցվածք • ? : ընտրության տերնար օպերատոր Ցիկլիկ կառուցվածքներ • while նախապայմանով ցիկլի կազմակերպում • do-while հետպայմանով ցիկլի կազմակերպում • for կառուցվածքային ցիկլի կազմակերպում • foreach հավաքածուի արժեքների ստացման ցիկլի կազմակերպում

  37. Պայմանական կառուցվածքներ • int x =0; if (x == 0) { x++; } • if (x==0) { x++; } else { --x; } • if (x==0) { ++x; } else if (x==2) { --x; } • if (x==0) { } else if(x==1) { } else { } • bool b = (x !=0) ? true : false; int x = 1; int y = x++ + x++; // x=? , y=? int x = 1; int y = ++x + ++x; // x=? , y=? int x = 1; int y = ++x + x++; // x=? , y=? Ցանկալի չէ կիրառել` x = x++;

  38. Ընտրման ընդհանուր գրելաձև switch(<փոփոխական>) { case <արժեք>: [case <արժեք>:] { <ընտրված_մարմին> } break; . . . [case <արժեք>: { <ընտրված_մարմին> } break; ] [default: { <ընտրված_մարմին> } break; ] }

  39. Ընտրման կառուցվածք int x; //... switch(x) { case 0: { } break; case 1: case 3: { } break; default: { } break; case 4: { goto case 2; } case 5: { return; } case 2: { goto default; } }

  40. Ցիկլի ընդհանուր գրելաձևերը • // նախնականարժեքավորմամբցիկլիկազմակերպում for([<նախնական_բլոկ>];[<պայման>];[<միջանկյալ_բլոկ>]) <ցիկլիկ_կառուցվածքի_մարմին> • // թվարկմամբցիկլիկազմակերպում foreach ( <ցիկլի_փոփոխական> in <հավաքածու>) <ցիկլիկ_կառուցվածքի_մարմին> • // Նախապայմանովցիկլիկազմակերպում while ( <պայման> ) <ցիկլիկ_կառուցվածքի_մարմին> • // Հետպայմանովցիկլիկազմակերպում do <ցիկլիկ_կառուցվածքի_մարմին> while ( <պայման> );

  41. Ցիկլիկ կառուցվածքներ • Կառուցվածքային ցիկլեր • Ներդրված ցիկլեր • Անվերջ ցիկլեր • Boolean b = true; while(b) { x++; } • Boolean b = true; do {x++; } while(b); • for(int i=0, j=0; i <10 && j<20; i++, j+=2) { x++; } • foreach (int x in zang_int) { x++; } • Ցիկլերի ընդհատում` break, continue բանալի բառեր

  42. Թռիչքի օպերատորներ • break ցիկլի կամ ընտրության ընդհատման հրաման • continue ցիկլի մեկ շրջափուլի ընդհատման հրաման • goto ընտրման բլոկների միջև կամ ներդրված ցիկլերից թռիչքի հրաման • throw ընդհատման առաջադրման կամ մշակման բլոկ թռիչքի հրաման • yield առանց ցիկլի ընդհատման ցիկլից արժեքների վերադարձման հրաման

  43. goto անցման օպերատոր class Program { static void Main(string[] args) { bool b1 = true, b2; Label1: b2 = (b1 ? true : false); // some source code if (b2) goto Label2; // another source code Label2: b1 = false; if (b2) goto Label1; } }

  44. break և continue ընդհատման օպերատորներ for ( int i = 0; i < 10; i = i + 1 ) { for( int j = 0; ; j = j + 1 ) { if ( j == i ) break; } // թռիչքիցհետոկատարվողտող; } // continue int summa = 0; for( int i = 0; i < 10 ; i++ /* նույննէ` i = i + 1 */ ) { if ( i == 5 ) continue; // 5 արժեքըչիգումարվում summa += i; // նույննէ` summa = summa + 5; }

  45. Ցիկլերի կազմակերպման օրինակներ • /*1*/ int summa = 0; for (int i =1; i <= 10; i = i+1) summa = summa + i ; • /*2*/ int summa = 0, i = 1; while ( i <= 10 ) { summa = summa + i ; i = i+1; } • /*3*/ int summa = 0, i = 1; do { summa = summa + i ; i = i+1; } while ( i <= 10 ) ;

  46. Terms:Եզրույթներ Reading flowcharts Decision tables Evaluating expressions Relational operator Logical operator Expression Condition Algorithm Compound statement Nested statements Precedence

  47. Գրականություն Դասագրքեր կամ տեղեկատուներ, Հեղինակներ. Jesse Liberty Herbert Schildt Andrew Troelsen Nagel and etc.

More Related