Webbserverprogrammering 1 · område 2 · v.37–41
C# på serversidan
Nu skriver du kod. Området går igenom språkets grunder – typer, villkor, loopar, listor, metoder och klasser – och du övar tills de sitter. Allt körs på servern och resultatet syns på en sida: det finns inget konsolfönster i den här kursen.
- 5 okt Inlämning 2 – Övningsbanken C#, kl 23:59 Repots adress lämnas i itslearning.
- 6 okt Prov 1 – C# på serversidan 80 minuter, utan dator. Papper och penna.
Sjutton steg med all kod, från de fyra typerna till en tabell renderad ur en lista med objekt. Följ den här om du missat ett pass.
Inlämning 2 Övningsbanken C#Krav för E, C och A, med kryssrutor som sparas i din webbläsare.
Övning 1–7 · lektion 6–7 Uttryck och typerDe fyra grundtyperna, interpolation, heltalsdivision och
int.TryParse.
if, switch, && och
||. Villkor som styr vilken HTML som byggs.
for, foreach, while och
List<T> renderad som tabell.
Metoder med returvärden, din egen modellklass och en lista med objekt.
Lektion 9 · parövning Tre kodstycken med felAlla tre kompilerar. Två ger fel svar utan att säga något. Hitta felen innan du läser rättningen.
Lektion 13–14 Vad provet prövarDe fyra frågetyperna, vad som inte kommer, och tolv repetitionsfrågor att svara på innan du vänder på svaret.
1. Nio lektioner
Tisdagarna bär det nya, onsdagarna befäster. Kolumnen längst till höger säger vad du gör om du var borta.
| # | Datum | Längd | Vad vi gör | Missade du passet? |
|---|---|---|---|---|
| 6 | tis 8 sept | 85 min | Datatyper, variabler och utdata. int, double,
bool, string, interpolation, int.TryParse. |
Guiden steg 1–5, sedan övning 1–7 |
| 7 | ons 9 sept | 45 min | Övningspass: uttryck och typer. Eget arbete, två övningar gemensamt på slutet. | Övning 1–7 |
| 8 | tis 15 sept | 85 min | Villkor och logik. if, else if, switch,
villkor i markupen, ett värde ur adressen. |
Guiden steg 6–9 |
| 9 | ons 16 sept | 45 min | Övningspass: villkor. Parvis felsökning av tre färdiga kodstycken. | Övning 8–14 och de tre kodstyckena |
| 10 | tis 22 sept | 85 min | Loopar, listor och arrayer. for, foreach,
while, List<T>, tabell ur en loop. |
Guiden steg 10–13 |
| 11 | ons 23 sept | 45 min | Övningspass: loopar och listor. Eget arbete med handledning. | Övning 15–21 |
| 12 | tis 29 sept | 85 min | Metoder, klasser och objekt. Modellklassen, new, objekt i en
lista, namngivning enligt C#-praxis. |
Guiden steg 14–17, sedan övning 22–28 |
| 13 | ons 30 sept | 45 min | Arbetspass och repetition. Sista finputs, och vad provet prövar. | Vad provet prövar och checklistan |
| 14 | tis 6 okt | 85 min | Prov 1. Skriftligt, 80 minuter, utan dator. | Går inte att ta igen på egen hand – anmäl frånvaron och gör uppsamlingsprovet |
2. Det här ska sitta
- Du kan välja typ medvetet och säga varför ett fält är
intoch intedouble. - Du kan läsa ett kodstycke och säga vad det skriver ut, utan att köra det.
- Du kan skriva ett villkor som täcker också gränsfallet och det oväntade värdet.
- Du kan gå igenom en lista med en loop och samla ihop ett svar under vägen.
- Du kan lyfta ut en uträkning ur markupen och lägga den i en metod.
- Du kan beskriva något med en egen klass och rendera en lista med objekt som en tabell.
- Du följer C#:s namngivning: PascalCase på metoder och egenskaper, camelCase på variabler.
3. Fyra sidor, inte en
Övningarna ligger på fyra sidor i ditt projekt, en per tema. Det är inte pyssel – det finns två konkreta skäl.
| Sida i ditt projekt | Övningar | Tema |
|---|---|---|
/ovningar/typer | 1–7 | Uttryck, typer, utdata |
/ovningar/villkor | 8–14 | Villkor och logik |
/ovningar/loopar | 15–21 | Loopar, listor, arrayer |
/ovningar/metoder | 22–28 | Metoder, klasser, objekt |
Kompilerar inte övning 17 går övning 1–16 inte att visa heller – sidan blir tom. Fyra sidor begränsar skadan till ett tema. Får du plötsligt en tom sida: läs det första felet i terminalen, inte det sista.
Alla @code-block på en sida blir samma klass. Två övningar som
båda använder summa ger CS0102: already contains a
definition. Döp fälten efter övningens nummer från början –
o3Pris, o3MedMoms – så slipper du döpa om tolv
variabler i vecka fyra.
4. Kom igång
Du behöver ett projekt att öva i. Skapa ett nytt, eller fortsätt i projektet från område 1 – blanda då inte ihop sidorna.
| Steg | Det du gör |
|---|---|
| 1 | Skapa ett tomt, publikt repo på github.com som heter ovningsbanken. Inga bockar. |
| 2 | Skapa projektet: dotnet new blazor -o Ovningsbanken -int None |
| 3 | Gå in i mappen och kör det: cd Ovningsbanken och dotnet run |
| 4 | Skapa de fyra sidorna i Components/Pages/, med @page "/ovningar/typer" och så vidare. |
| 5 | Lägg in de fyra sidorna i menyn, Components/Layout/NavMenu.razor. |
| 6 | Koppla på GitHub: git init, git add ., git commit -m "Fyra tomma övningssidor", git branch -M main, git remote add origin …, git push -u origin main |
Committa efter varje övningspass, inte allt sista kvällen. Fem commits är ett krav i uppgiften just därför.
5. Felsökning
Sök på felmeddelandet du fick, eller på ett ord ur det.
14 rader
| Symptom | Trolig orsak | Åtgärd |
|---|---|---|
CS0102: already contains a definition for 'x' | Två övningar på samma sida använder samma variabelnamn | Döp om efter övningsnumret: o3Summa i stället för summa. |
CS0029: Cannot implicitly convert type 'string' to 'int' | Du tilldelar text till ett heltal | Antingen fel typ på variabeln, eller så behövs int.TryParse. |
CS0161: not all code paths return a value | En gren i din metod saknar return | Varje väg genom metoden måste lämna tillbaka något. |
CS0165: Use of unassigned local variable | Variabeln är deklarerad men aldrig given ett värde | int summa = 0;, inte bara int summa; |
CS8509: switch expression does not handle all possible values | Din switch saknar fallet för allt annat | Lägg till _ => "okänt". En varning är inte en åsikt. |
SwitchExpressionException, sidan svarar 500 | Samma sak som ovan, men värdet kom faktiskt | Lägg till _ =>-grenen och ladda om. |
| Divisionen blir 0 eller ett misstänkt jämnt tal | Heltalsdivision – decimalerna kastas bort | Gör om ett av talen till double: (double)summa / antal |
| Summan blir samma som sista värdet | summa nollställs inuti loopen | Flytta deklarationen utanför loopen. |
| Sidan svarar aldrig, terminalen hänger | Oändlig while-loop | Ctrl+C. Kontrollera att villkoret kan bli falskt. |
| Sidan är tom fast bara en övning är trasig | Ett kompileringsfel stoppar hela komponenten | Läs det första felet i terminalen och rätta det. |
The name 'Film' does not exist | Sidan hittar inte modellklassen | Lägg till @using DittProjekt.Models högst upp. |
Tabellen visar True i stället för Ja | Så skriver C# ut ett bool | @(varde ? "Ja" : "Nej"), eller en metod som formaterar. |
| Numreringen börjar på 0 | Index i en lista börjar på noll | @(i + 1) när du skriver ut numret. |
bin/ och obj/ ligger i repot | .gitignore saknas | git rm -r --cached bin obj, och lägg till en .gitignore. |
6. Orden
Orden nedan används från och med nu utan förklaring. Träna tills du kan dem – en av provets fyra frågetyper är förklara.
Ordträning
| Ord | Betyder |
|---|---|
| datatyp | Vad ett värde är för sorts sak: text, heltal, decimaltal, sant eller falskt. |
| variabel | Ett namn som håller ett värde. |
| fält | En variabel som hör till komponenten och lever så länge sidan byggs. |
| interpolation | Att sätta in värden mitt i en text med $"..." i stället för att limma ihop den med plus. |
| heltalsdivision | När båda talen är heltal kastas decimalerna bort. 7 delat med 2 blir 3. |
| modulo | Resten vid en division, skrivet %. 142 % 60 är 22. |
| villkor | En fråga som besvaras med sant eller falskt. |
| operator | Ett tecken som gör något med värden: +, >=, &&. |
| loop | Kod som körs flera gånger. |
| index | Platsen i en lista. Den första platsen är 0. |
| lista | En samling värden i en variabel, List<T>. |
| metod | Ett namngivet kodstycke som tar emot värden och lämnar tillbaka ett svar. |
| parameter | Värdet en metod tar emot, namngivet inuti metoden. |
| returvärde | Det metoden lämnar tillbaka till den som anropade den. |
| klass | En beskrivning av vad något är: vilka egenskaper det har. |
| objekt | En sak skapad ur en klass med new. |
| egenskap | Ett namngivet värde som hör till ett objekt. Skrivs i PascalCase. |
| PascalCase | Stor bokstav i varje ord: LangdMinuter. Används på klasser, metoder och egenskaper. |
| camelCase | Liten bokstav först: antalMinuter. Används på variabler och parametrar. |
| frågesträng | Värdena efter ? i adressen. Läses med [SupplyParameterFromQuery]. |