← Område 2 Prov 1 · C# på serversidan Repetition

Webbserverprogrammering 1 · område 2 · lektion 13–14

Vad prov 1 prövar

Osäkerhet inför ett prov kostar mer än innehållet gör. Den här sidan säger så konkret det går vad som kommer, vad som inte kommer, och hur frågorna ser ut. Har du gjort övningarna och läst facit är du förberedd – det finns ingen genväg vid sidan av den.

1. Formen

VadSå är det
Tid80 minuter. Sluttiden skrivs på tavlan.
HjälpmedelInga. Ingen dator, ingen telefon, inga anteckningar.
OmfattningUngefär fjorton frågor. Poängen står vid varje fråga.
MaterialProvet på papper, plus kladdpapper. Ta med penna du kan sudda med.
TyngdpunktAtt läsa kod och säga vad som skrivs ut – inte att skriva stora program.
Klar tidigtDu får lämna efter 40 minuter, tyst.
Sen ankomstDu släpps in fram till 20 minuter in. Ingen förlängd tid.
FrånvaroUppsamlingsprov enligt skolans rutin, samma innehåll.
Två råd som är värda poäng

Läs hela provet innan du börjar svara. Fråga fyra kan innehålla ledtråden till fråga elva.

Kod som är nästan rätt ger poäng. Skriv hellre något som visar hur du tänker än att lämna blankt. Räcker inte tiden: svara på det du kan i stället för att göra en fråga perfekt.

Fyra frågetyper. Tre av dem har kod i sig, och de tre finns här nedan som körbara komponenter – lägg dem i ditt projekts Components/Pages/ om du vill se svaren på skärmen i stället för att bara tro på dem.

2. Frågetyp 1: vad skrivs ut?

Ett kodstycke, du skriver svaret. Den här typen är den vanligaste på provet.

Svara på papper innan du läser vidare: vad står i den utskrivna meningen?

@page "/provtraning/1"

<PageTitle>Provträning 1 – vad skrivs ut?</PageTitle>

<h1>Frågetyp 1: vad skrivs ut?</h1>

<p>Svara på papper först. Ladda sedan om sidan och jämför.</p>

<p>@Svaret()</p>

@code {
    private string Svaret()
    {
        List<int> tider = new List<int> { 96, 142, 120, 88 };

        int summa = 0;
        int langa = 0;

        foreach (int tid in tider)
        {
            summa = summa + tid;

            if (tid >= 120)
            {
                langa++;
            }
        }

        int snitt = summa / tider.Count;

        return $"Summa {summa}, snitt {snitt}, långa {langa}";
    }
}
FrågaSvar
Vad skrivs ut?Summa 446, snitt 111, långa 2
Var ligger fällan?Snittet. 446 delat med 4 är 111,5, men båda talen är int – decimalerna kastas bort och svaret blir 111.
Hur får man 111,5?(double)summa / tider.Count

3. Frågetyp 2: vad är fel?

Ett kodstycke som kompilerar men gör fel sak. Du säger vad felet är och hur det rättas.

Metoden nedan ska ge det största talet i listan. För den här listan svarar den rätt. Vilken lista avslöjar felet?

@page "/provtraning/2"

<PageTitle>Provträning 2 – vad är fel?</PageTitle>

<h1>Frågetyp 2: vad är fel?</h1>

<p>Metoden ska lämna tillbaka det största talet i listan. Den kompilerar, och för
den här listan svarar den rätt. Vilken lista avslöjar felet?</p>

<p>Största talet: @Storst(talen)</p>

@code {
    private List<int> talen = new List<int> { 12, 47, 3, 29 };

    private int Storst(List<int> tal)
    {
        int storst = 0;

        foreach (int t in tal)
        {
            if (t > storst)
            {
                storst = t;
            }
        }

        return storst;
    }
}
FrågaSvar
Vad är fel?storst startar på 0. Inget tal i listan behöver vara större än 0.
Vilken lista avslöjar det?En med bara negativa tal, till exempel { -12, -3, -47 }. Svaret blir 0, som inte finns i listan.
RättningenBörja på listans första värde: int storst = tal[0]; – och svara vettigt när listan är tom.

Fler av den här sorten finns på de tre kodstyckena med fel från lektion 9. Är du osäker på frågetypen är det där du ska öva.

4. Frågetyp 3: skriv koden

Tre till fem rader, för hand. Ingen IDE rättar åt dig, så namn och semikolon är dina.

Uppgiften: skriv en metod som tar emot ett antal minuter och lämnar tillbaka tiden som timmar och minuter. Skriv ditt svar innan du läser koden.

@page "/provtraning/3"

<PageTitle>Provträning 3 – skriv koden</PageTitle>

<h1>Frågetyp 3: skriv koden</h1>

<p>Uppgiften på provet: skriv en metod som tar emot ett antal minuter och lämnar
tillbaka tiden som timmar och minuter, till exempel "2 h 22 min". Tre till fem
rader, för hand.</p>

<p>Skriv ditt svar på papper först. Så här ser ett fullpoängssvar ut:</p>

<p>142 minuter blir @Speltid(142). 60 minuter blir @Speltid(60).</p>

@code {
    private string Speltid(int minuter)
    {
        int timmar = minuter / 60;
        int rest = minuter % 60;

        return $"{timmar} h {rest} min";
    }
}
FrågaSvar
Vad ger 142?2 h 22 min
Vad ger 60?1 h 0 min
Vad ger poäng?Rätt returtyp, / för timmarna och % för resten. Metodnamn med versal, parametern med gemen.

5. Frågetyp 4: förklara

En mening om varför något är som det är. Ingen kod, inget facit att rabbla – det är här facit till övningarna lönar sig, eftersom det säger varför och inte bara vad.

Frågorna ser ut ungefär så här:

Ett svar på en mening räcker. Ett svar som bara upprepar frågan gör det inte.

6. Det som inte kommer

7. Tolv repetitionsfrågor

Samma tolv som lagen fick på lektion 13. Svara högt för dig själv, klicka sedan på raden. Att säga svaret innan du ser det är hela poängen – läser du bara igenom listan känns allt bekant, och känslan är inte samma sak som att kunna.

FrågaSvar
1. Vad blir 7 / 2 när båda talen är int?3. Decimalerna kastas bort – det är inte avrundning.
2. Vad blir 7 % 2?1. Resten vid divisionen.
3. Vad skriver @tillganglig ut om fältet är ett bool som är sant?True, med versal. Vill du ha "Ja" får du formatera det själv.
4. Vilken plats i listan har det första värdet?Plats 0.
5. Vad heter antalet värden i en List<T>?Count. (Length är för arrayer.)
6. Varför måste summa deklareras utanför loopen?Deklareras den inuti nollställs den varje varv, och svaret blir sista värdet i stället för summan.
7. Vad händer om en switch saknar fallet för allt annat och får ett värde den inte täcker?Undantag i körningen: SwitchExpressionException, och sidan svarar 500. Kompilatorn varnade redan med CS8509.
8. Vad är skillnaden mellan && och ||?&& kräver att båda villkoren är sanna, || att minst ett är det.
9. Vad gör int.TryParse som int.Parse inte gör?Den kraschar inte på text som inte är ett tal – den lämnar tillbaka false så att du kan svara vettigt.
10. Vad är skillnaden mellan en klass och ett objekt?Klassen är beskrivningen, objektet är en sak skapad ur den med new. En klass, många objekt.
11. Varför skrivs metodnamn med stor bokstav?C#-praxis: PascalCase på klasser, metoder och egenskaper, camelCase på variabler och parametrar. Det är kodningsstandard och bedöms.
12. Vad betyder ? efter en typ, som i Film??Att värdet får saknas – det kan vara null. Kompilatorn påminner dig då om att kontrollera det.

8. Kvällen innan

Inlämningen går ut kvällen före provet. Gör den klar först – att göra klart uppgiften är den bästa provförberedelsen som finns, och de tre sakerna nedan tar en kvart tillsammans.

  1. Räkna dina lösta övningar. Är det färre än tjugo: bestäm vilka du tar, och ta dem. Vet du att du har sex kvar gör du sex; tror du att du "ligger efter" gör du ingenting.
  2. Kontrollera att alla fyra sidorna svarar. Ett fel på en sida syns inte från de andra.
  3. git add ., git commit, git push – och öppna repot på github.com för att se att filerna faktiskt kom fram. En push som inte kontrollerats räknas inte.

Gå sedan igenom det som är lätt att missa i guiden. Det är fyra stycken och tar fem minuter, och de fyra sakerna är precis de som provet frågar om.