Kapitel 1 - Inledning och utmatning¶
Introduktion till kapitlet¶
I detta kapitel får du lära dig att skapa ditt första C#-program. Du kommer att installera det program som du kommer att skriva kod i när du programmerar och sedan lära dig att skapa ditt första program. Du kommer att få lära dig hur man skriver ut text till användaren, även kallat utmatning, och se hur man kan göra en simpel dokumentation av sina program.
Tanken bakom ProgSharp¶
Snabbstart
Om du vill komma igång med att programmera så fort som möjligt så kan du hoppa vidare till avsnittet Installera Visual Studio.
ProgSharp är tänkt som kursbok till gymnasiekursen Programmering 1. Tanken är att man ska lära sig grunderna genom att göra textbaserade program, d.v.s. program utan grafik, för att sedan använda det man har lärt sig till att skapa 2-dimensionella spel med MonoGame.
När du har lärt dig grunderna en bit in i boken så kommer du också att få jobba med att göra några större program, så kallade projektuppgifter. Många av de svårigheter som finns med programmering dyker inte upp förrän man gör större program och därför är det viktigt att man inte enbart gör små övningsprogram.
Vad är C#¶
C# (uttalas C sharp) är ett programmeringsspråk som har funnits sedan år 2000 och som utvecklas av Microsoft. Det har historiskt främst använts för att skapa program som kan köras på datorer som använder Windows men kan sedan några år tillbaka också användas för att skapa program som körs på telefoner, surfplattor, Mac och Linux.
Namnet C# kommer från att C# liknar programmeringsspråken C och C++, #-tecknet kommer från musikens ♯ som innebär att en ton ska höjas. Tanken med namnet är att man ska tänka att C# är en nyare, bättre variant av de andra C-språken.
IDE - Programmet man skriver kod i¶
När man programmerar i C# så gör man det genom att skriva kod i vanliga textfiler som man ger filändelsen .cs. Det går att göra detta i vilken texteditor som helst, t.ex. Anteckningar som finns i Windows, men man har en stor fördel av att använda ett IDE istället som står får Integrated Development Environment. Ett IDE är ett program som är gjort för att programmera med. Förutom att innehålla en texteditor så brukar en IDE innehålla ett enkelt sätt att konvertera kod som man har skrivit till ett körbart program. Om man skriver kod i t.ex. Anteckningar så måste man själv konvertera koden till ett körbart program, och därför är det i princip ingen som programmerar i C# utan att använda ett IDE. Dessutom så har ett IDE ofta många andra smarta funktioner som gör det lättare och snabbare att programmera som du kommer märka när du själv skriver kod.
Det finns flera IDE att välja på när man ska programmera i C# men det absolut vanligaste är Visual Studio som är gjort av Microsoft, det är ju också Microsoft som har skapat C#. I denna bok kommer Visual Studio Community 2022 att användas och det är även denna du rekommenderas att använda om det inte har kommit ut någon nyare version av Visual Studio Community när du läser detta. Denna version av Visual Studio är gratis för privatpersoner och skolor.
Andra IDE:n
Ett exempel på ett annat IDE är Project Rider. Företaget som utvecklar Project Rider har skapat många olika IDE som används till olika programmeringsspråk. Denna webbplats använder dock enbart Visual Studio.
Installera Visual Studio¶
Du behöver ladda ner installationsprogrammet till Visual Studio som i dagsläget kan hittas på www.visualstudio.com eller via en sökning efter ”Visual Studio Community 2022". När du kör installationsprogrammet möts du av ett fönster som liknar detta.
När man installerar Visual Studio får man välja vilken typ av program som man vill kunna skapa och vilka programmeringsspråk man vill kunna använda. Ju fler programtyper som man vill kunna skapa, desto mer plats kommer installationen ta på din hårddisk. Vi kommer att skapa program i C# för Windows och behöver då bara välja alternativet ”.NET desktop development”.
När du därefter trycker på Install så kommer installationsprogrammet att ladda ner allt som behövs över internet och sedan installera Visual Studio på din dator. Efter att installationen är klar så kan du starta Visual Studio och kommer då att mötas av dess välkomstskärm. Du är nu redo att gå vidare och skapa ditt första program! Om du någon gång skulle vilja lägga till mer funktioner till Visual Studio, t.ex. möjligheten att skapa mobilappar, så kan du starta installationsprogrammet till Visual Studio igen för att modifiera din installation.
Hello world¶
Inom programmering så finns det en tradition när man ska lära sig att programmera, och det är att skriva ett ”Hello World”-program. Detta är ett program som skriver ut texten ”Hello world” på skärmen. Tanken är att man på detta sätt får se den minsta möjliga kod som krävs för att få ett fungerande program.
Vi kommer nu att steg för steg gå igenom hur man skapar ett sådant program i C#. Tryck på Create a new project. Du kommer nu till ett fönster där du får välja vilken typ av projekt, det vill säga vilken typ av program, som du vill skapa. Den typ av program som vi kommer att arbeta med under de första kapitlen i denna bok kallas för konsolprogram, och du väljer denna typ genom att markera Console app i listan till höger.
Tryck på Next för att komma till nästa fönster. Du behöver nu välja ett namn för ditt program. Det går bra att kalla programmet för vad man vill, men det kan vara bra att använda ett system för att enkelt se vilket program i boken du gjort, så namnet Exempel 1.1 – Hello World eller Example 1.1 passar bra här. Här kan du med fördel kryssa i rutan Place solution and project in the same folder vilket ger dig en smidigare mappstruktur om du senare vill undersöka filerna som du kodar i. Detta val kommer att sparas till alla framtida program du skapar men det går bra att ändra i framtiden om du vill.
I nästa fönster får du välja vilken version av .NET som ditt program använder sig av, ju nyare desto bättre. I denna bok används .NET 6.0 och du bör använda minst denna version för att all kod ska kunna skrivas på samma sätt som här.
När man skapar ett nytt program så skapas filen Program.cs där vi skriver koden som bestämmer vad programmet ska göra. Nedan så ser du samma kod som du borde ha fått.
// See https://aka.ms/new-console-template for more information
Console.WriteLine("Hello, World!");
Raden Console.WriteLine("Hello, World!");
gör så att programmet kommer skriva ut texten Hello world när det körs, den finns alltså med från början i varje program man skapar. För att testa ditt program så behöver du bara trycka på knappen med en grön "play-pil" i verktygsfältet (eller genom menyn Debug -> Start Debugging
eller genom att trycka på F5).
När du kör programmet så öppnas ett konsolfönster som ser ut som bilden ovan. Texten Hello world har skrivits ut följt av lite automatiskt text som avslutas med Press any key to close this window...
Den första raden i programmet börjar med två snedstreck och är en kommentar. Efter att man har skrivit två snedstreck på en rad kan man skriva vad man vill därefter och denna text kommer att ignoreras när programmeet körs. Denna kommentar innehåller information om hur "startkoden" som finns i filen har ändrats sedan tidigare versioner av .NET, denna kommentar går bra att sudda ut i alla program som du gör.
Testa att skriva till följande rad i ditt program och kör det sedan igen. Var noga med att skriva kommandot Console.WriteLine("Denna rad har jag skrivit");
exakt så som det står.
Console.WriteLine("Hello, World!");
Console.WriteLine("Denna rad har jag skrivit");
Som du säkert märkte när du skrev in koden så började Visual Studio att visa förslag på vad du kunde skriva. Vill du att Visual Studio ska skriva ut det markerade förslaget så kan du trycka på tab-tangenten, mellanslag eller punkt. Detta kallas kodkomplettering, och Microsoft kallar den kodkompletteringen som finns i Visual Studio för Intellisense. Man kan spara mycket tid och felstavningar genom att använda Intellisense så mycket som möjligt.
Intellisense-tips
Skriv cw och tryck sedan på tab-tangenten två gånger för att skriva Console.Writeline();
När du vill skapa ett nytt program kan du göra det genom att gå till File -> New -> Project
i Visual Studios meny och sedan följa samma steg som när du skapade det första programmet.
Uppgift 1.1¶
Ändra ditt första program så att det skriver ut ditt namn på den första raden i stället för ”Hello world”.
Uppgift 1.2¶
Skapa ett nytt program som skriver ut följande text:
Detta är ett program gjort i C#.
Programmet skriver ut text på flera rader.
Detta är programmets sista utskrift.
Lösningstips 1.2
Skapa ett nytt program genom att välja File -> New -> Project
i Visual Studios meny. Använd en Console.WriteLine("");
för varje rad, var noga med att skriva namnet exakt med stora/små bokstäver. Skriv texten som du vill skriva ut inuti citattecknen.
Kommentarer och specialtecken¶
Man kan skriva ut mer text i sitt program än vad vi gjorde i Hello World. Det går bra att skriva hur många Console.WriteLine
som helst, glöm bara inte semikolon i slutet. Koden innehåller också kommentarer. En kommentar är text i koden som inte tas med när programmet körs, precis som den startkommentar som finns högst upp i varje program som du skapar. Genom att skriva två snedstreck så blir resten av texten på raden en kommentar, och där kan man alltså skriva vad man vill. Man kan också skapa kommentarer över flera rader genom att skriva /*
, då kommer all text i filen vara en kommentar till man skriver */
. Notera också att man kan införa hur många tomma rader man vill på vilka ställen man vill i koden, detta påverkar inte programmet men kan göra det lättare att se vilka delar av programmet som hör ihop.
I exemplet visas också hur man kan dela upp det man vill skriva på flera rader för att en kodrad inte ska bli så lång så att den blir svår för programmeraren att läsa. Avsluta texten du håller på att skriva, skriv ett plustecken och gör därefter en ny rad. Du kan nu börja skriva en ny text inom citationstecken.
Console.WriteLine("Här är lite text.");
// Efter två snedstreck så kan man skriva vad man vill
// Detta är en kommentar
Console.WriteLine("Denna text kommer på en ny rad.");
/*
* Man kan skriva kommentarer på flera
* rader på detta sätt.
*/
Console.WriteLine("Den här texten kommer också på en ny rad.");
// Console.WriteLine("Denna text skrivs inte ut");
// Man kan göra nya rader i koden före och efter plustecknen
Console.WriteLine("Denna texten kommer " +
"på samma rad när programmet " +
"körs.");
Kommentarerna i ett program brukar som sagt användas för att förklara delar av koden som kan vara lite svår att förstå vid en första anblick men de kommer i denna bok dessutom användas för att förklara nya programmeringskoncept.
Ska jag skriva kommentarer när jag gör uppgifterna?
Ställ dig själv frågan "Kommer jag kunna förstå all kod i mitt program om ifall jag stänger ner det nu och öppnar det igen om två månader?" Om svaret är ja behöver du inte skriva någon kommentar, annars bör du göra det.
När vi bestämmer vad som ska skrivas ut i en Console.WriteLine()
så börjar och slutar texten med citationstecken. Men hur gör man om man vill skriva ut citationstecken? Om man försöker skriva in ett citationstecken någonstans i mitten kommer Visual Studio visa att det är något som är felskrivet, det tolkas nämligen som att du inte vill skriva ut mer text efter det citationstecknet. För att skriva ut ett citationstecken så måste det föregås av ett bakstreck, \
. Vill man skriva ut ett bakstreck så måste detta också föregås av ett bakstreck, det blir alltså två bakstreck på rad.
Console.WriteLine("Här skrivs ett \"-tecken ut.");
Console.WriteLine("Ett bakstreck \\ syns här.");
Console.WriteLine("Här blir det \n en ny rad och \t en tab.");
I exemplet visas också \n som ger en ny rad (bokstaven n står för ”new line”) och \t som ger samma effekt som när du trycker på tabtangenten. Det finns fler specialtecken än de som visas här.
Uppgift 1.3¶
Skapa ett program som skriver ut följande text:
"Hej" hörde jag någon säga på stan.
Efter en stund svarade någon annan också med ett "Hej!".
Lösningstips 1.3
Glöm inte att använda ett \
innan varje citationstecken.
Ett snyggare konsolfönster¶
Inte nödvändigt för kommande kapitel
I detta avsnitt visas hur du ändrar färg på konsolfönstret. Detta är inget som krävs i något av de kommande kapitlen så avsnittet kan ses som ett fördjupningsavsnitt.
Det är möjligt att ändra vilka färger som konsolfönstret har när ett program körs. Det gör man på följande sätt.
// Ändra bakgrundsfärg till mörkröd
Console.BackgroundColor = ConsoleColor.DarkRed;
Console.Clear();
// Ändra textfärgen till vit
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine("Ett testmeddelande");
Kommentarerna i koden beskriver vad som händer på raden efteråt. I detta fall så är dessa kommentarer inte särskilt nödvändiga om man har programmerat ett tag, men när man skriver större och mer komplicerade program så är kommentarer väldigt användbara. Kommentarerna hjälper både andra men också en själv att förstå vad koden gör, vilket kan vara lätt glömt om man inte har öppnat koden till ett program på några dagar. Kommentarerna kommer i denna bok göra det lättare för dig att följa med i de exempel som finns.
Bakgrundsfärg
Om du inte använder Console.Clear()
efter att du har bytt bakgrundsfärg så får inte hela bakgrunden den färgen, endast texten som skrivs. Testa att ta bort Console.Clear()
från exemplet och se hur det ser ut när programmet körs.
De färger man har att välja på är de olika ConsoleColor
som finns. När du skrivit punkten efter så kan du bläddra i listan över de olika färger du kan välja på.
Uppgift 1.4¶
Skapa ett program där du skriver ut lite text. Programfönstrets utseende ska påminna om den svenska flaggan genom att bakgrundsfärgen ska vara blå och textfärgen gul.
Lösningstips 1.4
Glöm inte att använda ett Console.Clear()
efter att du har bytt bakgrundsfärg, annars får inte hela fönstret den blå bakgrundsfärgen.
Var hamnar programmen?¶
Det som händer när du trycker på Start i Visual Studio är att ditt program kompileras, det innebär att Visual Studio tar koden du har skrivit och gör ett program av det. Alla program som skrivs i C# måste kompileras innan de kan köras. Vi ska nu hitta var ditt program (din .exe-fil) hamnar när du kompilerar det.
Programmet måste kompileras innan det kan köras
Ett program måste kompileras, d.v.s. översättas från kod till ett körbart program, innan man kan köra det. Programmets .exe-fil skapas när du kompilerar det vilket sker automatiskt när du startar programmet i Visual Studio. Om du aldrig har startat ditt program i Visual Studio kommer du inte att hitta någon .exe-fil.
Det lättaste sättet att hitta sina program är att ta hjälp av Visual Studio. I den högra delen av Visual Studio finns ett fönster som heter Solution Explorer som ser ut som bilden nedan.
Solution Explorer innehåller en översikt över alla de och inställningar som vårt program har. I denna bok kommer vi mestadels enbart skriva kod i filen Program.cs som skapas varje gång vi gör ett nytt program.
Högerklicka på raden som i bilden ovan heter Solution 'Example 1.1' (1 of 1 project), i ditt program kommer den att heta något annat beroende på vad du döpte programmet till. I menyn som dyker upp väljer du Open Folder in File Explorer
. Då kommer ett nytt fönster öppnas med den mapp som innehåller ditt program.
Om du går vidare i mappen som har samma namn som ditt program och sedan går till mappen bin, därefter Debug och därefter net6.0 (detta namn kan skilja sig lite åt beroende på när du installerade Visual Studio) så hittar du ditt körbara program. Ett körbart program är en fil med filändelsen .exe. Det finns även en del andra filer i denna map som Visual Studio använder, men ditt körbara program består enbart av .exe-filen. Du kan starta dina program som du gjort genom att köra .exe-filen härifrån, du behöver alltså inte ha Visual Studio igång för att köra dina program när du väl har kompilerat dem.
När du testar att köra programmet så kommer du märka att det bara blinkar till innan det stängs av. Detta beror på att ett program i C# egentligen alltid stängs av så fort det har kört klart sin sista rad. När vi startar programmen med hjälp av Visual Studio så håller Visual Studio programfönstret igång även efter att programmet har slutat för att vi ska kunna se vad programmet har gjort. Om du vill att ditt program inte ska avslutas direkt när du öppnar det med hjälp av .exe-filen så måste du lägga till följande kodrad efter dina Console.WriteLine
och andra kommandon.
Console.ReadKey();
Detta kommando gör så att programmet väntar med att gå vidare till nästa rad innan användaren trycker på en tangent på tangentbordet. Testa gärna att lägga till detta och köra ditt program först i Visual Studio och sedan genom att öppna .exe-filen som du har fått.
Inga mer Console.ReadKey
i denna bok
I resten av denna bok så kommer vi alltid att starta programmen med hjälp av Visual Studio och därför kommer inte Console.ReadKey();
att användas.
Blandade uppgifter till kapitel 1¶
Uppgift 1.5¶
Skriv ett program som skriver ut följande text. Skriv dessutom en kommentar till varje rad i koden som förklarar vad nästkommande kodrad gör.
Du är nästan klar med kapitel 1.
Du har lärt dig skriva ut tecken som " och \.
Uppgift 1.6¶
Skapa ett program som har samma utseende som en Windows-dator förr fick när den kraschade, alltså med blå bakgrund och vit text. Skriv ut lite text som gör så att det ser ut som att datorn har fått ett allvarligt fel.
Uppgift 1.7¶
Skapa ett program som ritar ut en triangel med två citationstecken i mitten som ser ut så här
/\
/ \
/ ”” \
/______\
Lösningstips 1.7
Glöm inte att använda ett \
innan varje citationstecken och varje \
som du vill skriva ut.