programmering i c#
DESCRIPTION
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. - PowerPoint PPT PresentationTRANSCRIPT
Programmering i C#
2. Inledande detaljer
Programmering i C# - Kapitel 22
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 23
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 24
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 25
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 26
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 27
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 28
Exempel terminal-IO
static void 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 29
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 210
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 211
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 212
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 213
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 214
Operatorer
Aritmetiska + - * / ++ -- % Beräkningar på heltal och flyttal
Logiska && || ! Returnerar true eller false
Jämförande < <= > >= == != Returnerar true eller false
Programmering i C# - Kapitel 215
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 216
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 217
Associativitet
Alla binära operatorer utom tilldelning exekverar vänster till höger
Tilldelning sker höger till vänster
Programmering i C# - Kapitel 218
2.5 Vektorer
Enbart språksyntax som förenklar och döljer användande av System.Array
int[] vec = new int[100];
int[] vec = new int[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 219
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 220
Flerdimensionell vektor
int[,] matrix = new int[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 221
2.6 Uttryck och satser
Villkorsuttryck alltid av typen bool
if (x < 0)
{ ... }
else if (x < 10) // mellan 0 och 9
{ ... }
else if (x < 20) // mellan 10 och 19
{ ... }
else // >= 20
{ ... }
Programmering i C# - Kapitel 222
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 223
Switch forts.
switch (str)
{case ”Anders” :case ”Bertil” :case ”Cecilia”: Console.WriteLine(”ABC”); break;case ”David” : Console.WriteLine(”David och ”);
goto case ”Erik”;case ”Erik” : Console.WriteLine(”Erik”); break;
}
Programmering i C# - Kapitel 224
While och do-while
Enklaste iteration Villkoret först eller sist
while (TestMethod(x))
{
…
}
do
{
…
} while (TestMethod(x));
Programmering i C# - Kapitel 225
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 226
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 227
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 228
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 229
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>
public void Move(int xor, int yor) { ... }