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.
- 6 okt Prov 1 – C# på serversidan 80 minuter. Dagen efter deadline för inlämning 2.
1. Formen
| Vad | Så är det |
|---|---|
| Tid | 80 minuter. Sluttiden skrivs på tavlan. |
| Hjälpmedel | Inga. Ingen dator, ingen telefon, inga anteckningar. |
| Omfattning | Ungefär fjorton frågor. Poängen står vid varje fråga. |
| Material | Provet på papper, plus kladdpapper. Ta med penna du kan sudda med. |
| Tyngdpunkt | Att läsa kod och säga vad som skrivs ut – inte att skriva stora program. |
| Klar tidigt | Du får lämna efter 40 minuter, tyst. |
| Sen ankomst | Du släpps in fram till 20 minuter in. Ingen förlängd tid. |
| Frånvaro | Uppsamlingsprov enligt skolans rutin, samma innehåll. |
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åga | Svar |
|---|---|
| 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åga | Svar |
|---|---|
| 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ättningen | Bö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åga | Svar |
|---|---|
| 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:
- Varför blir
7 / 2lika med 3 och inte 3,5? - Varför måste
summadeklareras utanför loopen? - Vad är skillnaden mellan en klass och ett objekt?
- Varför är
int.TryParsebättre änint.Parsepå något användaren skrivit?
Ett svar på en mening räcker. Ett svar som bara upprepar frågan gör det inte.
6. Det som inte kommer
- Ingen HTML utantill.
- Inga metodnamn ur ramverket som inte använts i kursen.
- Inget om databaser – det är område 5.
- Inget om komponenter, routing eller layout – det är område 3.
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åga | Svar |
|---|---|
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.
- 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.
- Kontrollera att alla fyra sidorna svarar. Ett fel på en sida syns inte från de andra.
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.