1 / 29

Programmering i C#

Programmering i C#. 2. Inledande detaljer. Syntax. Satser avslutas med semikolon Raddelning saknar oftast betydelse Sats kan ersättas av block Flera satser inom klammerparenteser Variabler definieras med typ namn = initialvärde; Kommentarer med /* */ eller // eller /// /// beskrivs senare.

cleo-phelps
Download Presentation

Programmering i C#

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. Programmering i C# 2. Inledande detaljer

  2. Syntax • Satser avslutas med semikolon • Raddelning saknar oftast betydelse • Sats kan ersättas av block • Flera satser inom klammerparenteser • Variabler definieras medtyp namn = initialvärde; • Kommentarer med /* */ eller // eller /// • /// beskrivs senare Programmering i C# - Kapitel 2

  3. 2.1 IO och strängar • Utmatning till terminal med Console.WriteLine(…) • Parametern kan vara valfri typ – för de inbyggda skrivs värde, för många andra typer skrivs ledtext och värden, för övriga skrivs typnamn Console.WriteLine(”Hello World”); int x = 100; Console.WriteLine(x); Programmering i C# - Kapitel 2

  4. Formaterad utmatning • Värden kan läggas in i ledtext • Formatparametrarna kan också innehålla koder för styrning av utmatningsformat int x = 100; double y = 123.5; Console.WriteLine(”Värdet i x är {0}, och i y {1}”,x, y); Programmering i C# - Kapitel 2

  5. Object.ToString() • Basklassen Object har metoden ToString • Omdefinierad i åtskilliga typer för utskrift av objektets tillstånd • Klassen String har plusoperator Console.WriteLine(”Värdet i x är ” + x.ToString() +” och i y ” + y.ToString()); Programmering i C# - Kapitel 2

  6. Strängar • Klassen String motsvarar C# string • Immutable – alla metoder returnerar nytt objekt • Innehåller teckenvektor i Unicode • Literalsträng har typen string • Syntaxfel att skapa objekt med new • anmärkningsvärt undantag Programmering i C# - Kapitel 2

  7. Inläsning • Console.ReadLine() returnerar en string • Strängen parsas med Convert.ToXXX(s) eller med måltypens XXX.Parse(s) • XXX är måltypen, s är strängen • Parsingfel ger undantag! • Inte ens ett extra blanktecken… Programmering i C# - Kapitel 2

  8. Exempel terminal-IO staticvoid Main() { Console.Write(”Skriv in ett heltal: ”);string s = Console.ReadLine();int left = Convert.ToInt32(s);Console.Write(”Skriv ett till ”);s = Console.ReadLine();int right = Convert.ToInt32(s);Console.WriteLine(”{0} + {1} = {2}”, left, right, left + right); } Programmering i C# - Kapitel 2

  9. 2.2 Main-metoden • Programmets startpunkt • Ingår i valfri klass • Statisk, valfri synlighet • Får finnas flera! • Kompilatorflagga anger då vilken som gäller • Ingen parameter eller en string[] • Returtyp void eller int Programmering i C# - Kapitel 2

  10. 2.3 Typomvandlingar • För inbyggda structtyper implicit i alla ofarliga riktningar • int till long, int till double, etc int var = 1000000; byte b = var; // kompileringsfel long l = var; // OK double d = var; // OK bool b = var; // ingen typomvandling till bool! Programmering i C# - Kapitel 2

  11. Explicit typomvandling • Explicit med eller utan övervakning vid exekvering • Enligt kompilatorflagga • Med checked/unchecked byte b = (byte) var; // var är en int int var = 1000000; checked (byte b = (byte) var); // undantag genereras! Programmering i C# - Kapitel 2

  12. Up/downcast och boxing • Basklassreferens kan referera till härlett objekt enligt OO-lagarna och CTS • Härledd referens kan aldrig tilldelas basklassobjekt • Alla typer härleds från Object • Objectreferens bör kunna tilldelas struct! • Sker med ”boxing” och föklaras senare Programmering i C# - Kapitel 2

  13. 2.4 Operatorer • Operatorer är statiska metoder som anropas med annan syntax • <operand> operator operand • Ger naturligare syntax i klientkod • Används mycket flitigt i klassbiblioteket • Uppsättningen operatorer definierat i C# • Men inte deras logik Programmering i C# - Kapitel 2

  14. Operatorer • Aritmetiska • + - * / ++ -- % • Beräkningar på heltal och flyttal • Logiska • && || ! • Returnerar true eller false • Jämförande • < <= > >= == != • Returnerar true eller false Programmering i C# - Kapitel 2

  15. Operatorer forts. • Bitvisa • & | ^ ~ << >> • Används typiskt med uint som bitmönster • Typhantering • () is as typeof • Typkontroll och säker typomvandling • Övriga • . = () [] new ?: Programmering i C# - Kapitel 2

  16. Prioritet • Ordningen i anropen kan vara kritisk • Förtydliga med parenteser! int x = 5, y = 3, z = 1; int sum1 = x * y + z; // 16 int sum2 = x * (y + z); // 20 bool a = false, b = false, c = false; if (a && b == c) ... // false if ((a && b) == c) ... // true Programmering i C# - Kapitel 2

  17. Associativitet • Alla binära operatorer utom tilldelning exekverar vänster till höger • Tilldelning sker höger till vänster Programmering i C# - Kapitel 2

  18. 2.5 Vektorer • Enbart språksyntax som förenklar och döljer användande av System.Array int[] vec = newint[100]; int[] vec = newint[5] { 1, 2, 3, 4, 5 }; vec[3] = 100; // första satsen ekvivalent med: Array vec = Array.CreateInstance(typeof(int), 100); Programmering i C# - Kapitel 2

  19. Arraymetoder • Åtskilliga metoder i Array • Vissa statiska, andra instansmetoder vec.Length // antal element (i alla dimensioner) vec.GetLength(0) // element i första dimensionen Array.IndexOf(vec, 5) // söker första element med // värdet 5 Array.Sort(vec); // sorterar elementen Programmering i C# - Kapitel 2

  20. Flerdimensionell vektor int[,] matrix = newint[5, 10]; for(int dim = 0; dim < matrix.GetLength(0); dim++)for(int el = 0; el < matrix.GetLength(dim); el++) Console.WriteLine(matrix[dim, el]); Programmering i C# - Kapitel 2

  21. 2.6 Uttryck och satser • Villkorsuttryck alltid av typen bool if (x < 0) { ... } elseif (x < 10) // mellan 0 och 9 { ... } elseif (x < 20) // mellan 10 och 19 { ... } else // >= 20 { ... } Programmering i C# - Kapitel 2

  22. Switch • switch kan ersätta if-else med flera grenar switch (x) {case 1 : Console.WriteLine(”Ett”); break;case 2 : Console.WriteLine(”Två”); break;...default: Console.WriteLine(”Stort”); break; } Programmering i C# - Kapitel 2

  23. Switch forts. switch (str) {case ”Anders” :case ”Bertil” :case ”Cecilia”: Console.WriteLine(”ABC”); break;case ”David” : Console.WriteLine(”David och ”);gotocase ”Erik”;case ”Erik” : Console.WriteLine(”Erik”); break; } Programmering i C# - Kapitel 2

  24. While och do-while • Enklaste iteration • Villkoret först eller sist while (TestMethod(x)) { … } do { … } while (TestMethod(x)); Programmering i C# - Kapitel 2

  25. For • Vanligt är att indexvariabel räknar varv • Kan göras med while, bättre med for • Villkoret har default värdet true for (int i = 0; i < 100; i++) { … } Programmering i C# - Kapitel 2

  26. Foreach • Mycket enkel och säker • Endast för traversering av samlingar • Förutsätter implementation av vissa interface string[] names = { ”Anna”, ”Britta”, ”Cecilia” }; foreach (string s in names) { Console.WriteLine(s); } Programmering i C# - Kapitel 2

  27. Break och continue • break avslutar iterationen • continue avslutar pågående varv och påbörjar nästa • Gäller närmast omslutande while, do-while, for och foreach while (true) { if (…) break; } Programmering i C# - Kapitel 2

  28. 2.7 XML-kommentarer • Kommentarer efter /// • Placeras direkt före typdeklaration eller medlem • Rekommenderade XML-taggar finns • Exempel: <remarks>…</remarks> • Verktyg kan generera dokumentation Programmering i C# - Kapitel 2

  29. XML-kommentarer exempel • Standardbiblioteket är dokumenterat i XML /// <summary>This method changes the points location /// to the given coordinates.</summary> /// <param>xor is the new x-coordinate</param> /// <param>yor is the new y-coordinate</param> /// <returns>void</returns> publicvoid Move(int xor, int yor) { ... } Programmering i C# - Kapitel 2

More Related