Introduktion till C#
Den här guiden är för dig som är intresserad av C# men inte vet riktigt vart du ska börja, jag ska försöka göra det så enkelt och smärtfritt som möjligt.
Vi kommer att skriva programmen i en IDE, det är en slags helhetslösning för att skriva program i och underlättar livet rejält för oss som programmerare. För oss med Windows finns Visual Studio och för er resterande eller ni som vill köra öppen källkod så finns Mono. Bilderna nedan fungerar som länkar till respektive.
Hello World!
1. Skapa ett nytt projekt (CTRL + Shift + N)
2. Välj Visual C# och Console Application i menyn
3. Ge ditt projekt ett lämpligt namn, t.ex. HelloWorld
4. Skriv följande:
class Program
{
static void Main()
{
System.Console.WriteLine("Hello World!");
}
}
5. Kör programmet (F5)
Kommentarer
Kommentarer är text som ska underlätta att förstå programmet, texten ignoreras när programmet körs. I C# har vi två sätt att kommentera vår kod på, nämligen "// ..." för kommentarer på en rad och "/* ... */" för kommentarer på flera rader.
class Program
{
/* Här börjar kommentaren
På denna raden avslutas kommentaren */
static void Main()
{
System.Console.WriteLine("Hello World!"); // Skriver ut texten "Hello World!"
}
}
Om du kör Visual Studio så märkte du säkert hur fönstret stängdes direkt efter utskriften, eftersom vi vill hinna läsa texten skulle vi kunna göra en liten justering som låter oss stänga programmet när vi vill med vilket knapptryck som helst. Det här är också ett bra exempel på hur kommentarer fungerar.
class Program
{
static void Main()
{
System.Console.WriteLine("Hello World!");
// Keep the console window open in debug mode.
Console.WriteLine("Press any key to exit");
Console.ReadKey();
}
}
Import, datatyper och metoder
System.Console.WriteLine som hjälper oss att skriva ut en text är egentligen en färdigskriven kod, vi når den med något som kallas för metodanrop. System är ett bibliotek, fullt med användbara verktyg. Vi kan börja programmet med att importera System så slipper vi skriva System. varje gång vi ska använda det.
using System;
class Program
{
static void Main()
{
Console.WriteLine("Hello World!");
// Keep the console window open in debug mode.
Console.WriteLine("Press any key to exit");
Console.ReadKey();
}
}
Som du ser behövde jag inte skriva System.Console.WriteLine utan bara Console.WriteLine. Console innehåller fler delar än bara WriteLine, t.ex. metoden ReadKey(); som vi använt. En annan metod som ärver ifrån Console är Beep(); och den ger ifrån sig ett litet ljud när man kör programmet.
"Hello World!" är en sträng och det är en datatyp, man skulle kunna skapa en variabel av datatypen string och sedan skriva ut den och få precis samma utskrift som förut.
using System;
class Program
{
static void Main()
{
string hello = "Hello World!";
Console.WriteLine(hello);
// Keep the console window open in debug mode.
Console.WriteLine("Press any key to exit");
Console.ReadKey();
}
}
I/O
Istället för att skriva ut en textremsa kan vi slänga in lite nummer, vi vill ta in två heltal och skriva ut dessa. C# är hårt typat, det innebär bl.a. att vi måste skilja på heltal och tal med decimaler. Vi skapar variabeln a och b, två heltal som vi inte gett något värde.
int a;
int b;
Vi använder oss sen av samma metod som vi skrev ut "Hello World!" med, fast vi skriver istället:
Console.WriteLine("Skriv ett värde för a");
För att läsa in ett heltal skriver vi:
a = int.Parse(Console.ReadLine());
Jag tror att du skulle kunna skriva klart hela programmet själv nu eftersom du nästan har alla delar, programmet ska ta in två heltal och skriva ut dem adderat med varann.
Ha alltid i bakhuvudet att allt ska komma i ordning, först ber vi användaren att mata in ett värde och sedan skriver vi ut det så att det inte blir tvärtom.
static void Main(string[] args)
{
int a;
int b;
Console.WriteLine("Skriv ett värde för a");
a = int.Parse(Console.ReadLine());
Console.WriteLine("Skriv ett värde för b");
b = int.Parse(Console.ReadLine());
Console.WriteLine("a + b =");
Console.WriteLine(a + b);
Console.ReadLine();
}
Vid det här laget har du nog märkt hur vi avslutar uttryck med semikolon, detta gäller majoriteten av programspråk. Om vi ser till de tre raderna längst ner i koden så har vi först skrivit "a + b =" och sedan a + b inom metoden WriteLine(). I första fallet skriver vi ut "a + b =", det finns egentligen inget värde för a där eftersom det är en textsträng. I raden under har vi tagit emot värden för a och b och skriver ut dem adderat, tecknet "+" är egentligen en färdigskriven metod som lägger ihop två tal så att vi inte behöver tänka på det mer.
Villkorssatser
Själva villkorssatsen skrivs enligt formen "om (logiskt uttryck) gör något". I kod skulle det kunna se ut såhär:
int a = 10;
if (a == 10)
{
Console.WriteLine("a = 10");
}
Det vi kollar är om variabeln a, som är ett heltal, har värdet 10. Eftersom vi gett a värdet 10 så stämmer detta bra. Notera "==", det är en jämnförelseoperator medan "=" är en tilldelningsoperator. Med "==" så kan vi kolla om a och b har samma värde, med tilldelningsoperatorn så tilldelar vi a ett värde.
Tänk dig ett kunskapsspel där du får en ja eller nej fråga, eftersom vi bara har två val (ja eller nej) så ska vi använda oss av en booleansk datatyp då typen heltal (integer, int) har onödigt många möjliga värden. En booleansk datatyp skrivs som bool och har två möjliga värden, nämligen true eller false.
using System;
namespace ConsoleApplication
{
class ApplicationMain
{
static void Main(string[] args)
{
bool questionYesOrNo;
Console.WriteLine("The universe is about 13,7 billion years old");
questionYesOrNo = bool.Parse(Console.ReadLine());
if (questionYesOrNo == true)
{
Console.WriteLine("Correct");
}
else
{
Console.WriteLine("Nope");
}
Console.ReadLine();
}
}
}
Skriver man "true" så får man Correct som utskrift och skriver man "false" får man ett Nope tillbaks.
Loopar
For loop i C#
static void Main(string[] args)
{
for (int i = 1; i <= 10; i++)
{
Console.WriteLine("Current value of i is - " + i);
}
Console.ReadLine();
}
Mer om loopar inklusive bilder fixar jag strax, håll i er!
Källor och fortsatt läsning
C# 4.0 In a Nutshell
ISBN 9780596800956
Visual C# MSDN
http://msdn.microsoft.com/en-us/library/kx37x362