programmering i c#

29
Programmering i C# 2. Inledande detaljer

Upload: cleo-phelps

Post on 30-Dec-2015

195 views

Category:

Documents


2 download

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 Presentation

TRANSCRIPT

Page 1: Programmering i C#

Programmering i C#

2. Inledande detaljer

Page 2: Programmering i C#

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

Page 3: Programmering i C#

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);

Page 4: Programmering i C#

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);

Page 5: Programmering i C#

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());

Page 6: Programmering i C#

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

Page 7: Programmering i C#

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…

Page 8: Programmering i C#

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);

}

Page 9: Programmering i C#

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

Page 10: Programmering i C#

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!

Page 11: Programmering i C#

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!

Page 12: Programmering i C#

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

Page 13: Programmering i C#

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

Page 14: Programmering i C#

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

Page 15: Programmering i C#

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 ?:

Page 16: Programmering i C#

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

Page 17: Programmering i C#

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

Page 18: Programmering i C#

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);

Page 19: Programmering i C#

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

Page 20: Programmering i C#

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]);

Page 21: Programmering i C#

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

{ ... }

Page 22: Programmering i C#

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;

}

Page 23: Programmering i C#

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;

}

Page 24: Programmering i C#

Programmering i C# - Kapitel 224

While och do-while

Enklaste iteration Villkoret först eller sist

while (TestMethod(x))

{

}

do

{

} while (TestMethod(x));

Page 25: Programmering i C#

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++)

{

}

Page 26: Programmering i C#

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);

}

Page 27: Programmering i C#

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;

}

Page 28: Programmering i C#

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

Page 29: Programmering i C#

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) { ... }