Ur bokens förord: Till lärare som använder denna bok i en kurs

C++ på riktigt Forum Information till lärare Ur bokens förord: Till lärare som använder denna bok i en kurs

Etiketter: ,

Visar 1 inlägg (av 1 totalt)
  • Författare
    Inlägg
  • #526
    Simon K. Jensen
    Keymaster

    De flesta böcker om C++ för nybörjare är tjocka. De innehåller en massa exempel och ofta avslutas varje kapitel med ett antal övningar. I denna bok är det inte så, och det finns två stora fördelar med detta.

    Först och främst så verkar tjocka böcker i viss mån avskräckande. Eleverna förväxlar bokens tjocklek med omfattningen av den mängd kunskap de förväntas lära sig. De antar att en väldigt tjock bok handlar om väldigt mycket, vilket inte är fallet i de flesta fall. Innehållet i denna bok motsvarar ungefär den mängd teori som krävs för en 100-timmars gymnasiekurs. Det är inte en komplett genomgång av språket C++. Däremot är det en korrekt genomgång av språkets grundläggande beståndsdelar.

    För det andra så är det din uppgift som lärare att ge exempel och komma med övningar. Du är den som finns på lektionerna när frågorna uppstår och du känner både elevernas förkunskaper och kursens inriktning. Det är stor skillnad på om kursen ingår som del av ett program med inriktning på spelutveckling och animation eller inriktning på matematik och fysik. Börja med att själv läsa boken för att säkerställa att du verkligen har koll på teorin bakom de mest fundamentala begreppen såsom datatyper, variabler, uttryck, operatorer och satser. När du planerar kursen så konstruera gärna exempel och övningar utifrån dessa begrepp snarare än utifrån tidigare exempel som kanske används för att ”det bara har blivit så” eller att ”de känns enklare”.

    Boken är skriven utifrån devisen att ju högre lärarens teoretiska kunskaper är, ju bättre förutsättningar har läraren när det gäller att hjälpa eleverna med de praktiska problem som uppstår. En lärare som säger ”kanske behövs ett semikolon där, testa det” borde istället fråga ”är detta en uttryckssats?” och (om så är fallet) därefter fråga ”hur ser en uttryckssats ut?” vilket får eleven att själv komma fram till att det var ett semikolon som fattades. Att du har valt denna bok innebär förmodligen att du vill förbättra en befintlig kurs. För att lyckas med detta krävs inte att du vet allt om C++ (vilket få gör) utan att det du vet är korrekt.

    De svenska benämningarna på de begrepp som presenteras i boken har hämtats från befintliga översättningar av de motsvarande (och väletablerade) engelska begreppen. Det enda som möjligen kan tyckas främmande är att ordet fält används istället för den engelska termen array. Utöver den motivation som finns i början av kapitel 8 kommer här ett bra argument för att använda ett svenskt ord i svensk bok. Ordet array används inom nästan alla programspråk, men i motsättning till exempelvis de engelska orden integer, variable och value, så betyder array helt olika saker från programspråk till programspråk. I PHP finns begreppet associative array (ofta bara kallat array) som är samma sak som begreppet dictionary i Python. I JavaScript är en array ett objekt. De begrepp som presenteras i boken är antingen datalogiskt fundamentala (och då heter de samma sak i alla språk) eller specifika för C++ (och i så fall är det en fördel att de heter något specifikt).

    I boken är alla identifierare (alltså namn på variabler, funktioner och så vidare) på svenska. Detta är enbart av pedagogiska skäl. Nybörjare måste lära sig en lång rad engelska kodord, så genom att använda svenska identifierare bli det tydligt vad som är inbyggt i språket och vad som vi själva har hittat på. Om till exempel a är en instans av klassen string och b är en instans av en egendefinierad klass, så blir det tydligt att det inte är samma funktion vi anropar med uttrycken a.size() och b.storlek(), vilket hade varit mer oklart om vi skrivit b.size() istället.

    Samtliga kodexempel har byggts med Visual Studio Community 2019, men de fungerar även för andra utvecklingsmiljöer. Om tidigare utgåvor av Visual Studio används kan det vara nödvändigt att inkludera antingen filen pch.h eller stdafx.h manuellt i källkoden eller att helt stänga av användning av precompiled headers.

    Begreppet objekt (kapitel 13) behandlas innan begreppet klass (kapitel 14). Att först se hur objekt kan användas vid programmering ger större motivation att börja lära sig den relativt omfattande mängd teori som krävs för att kunna skapa klasser. I kapitel 13 och 14 växer två exempelklasser stegvist fram efterhand som nya begrepp introduceras. Det finns inget egentligt slutmål för dessa klasser (annat än ett pedagogiskt mål), och det blir tydligt att denna bok inte är en bok om objektorienterad modellering eller objektorienterad design. Det är en bok om programmering.

    Detta är även orsaken till att begreppet algoritm inte behandlas i boken. Utveckling och optimering av algoritmer är en separat disciplin som är nästintill oberoende av vilket programspråk som används. En del läsare har redan denna kunskap, från exempelvis tidigare matematik- eller programmeringskurser. Dock är det en bra idé att alltid ägna ett par timmar åt algoritmer någon gång under kursens gång, förslagsvis kan ett par söknings- och sorteringsalgoritmer diskuteras.

    Vissa avsnitt kan skippas helt om de inte får plats i kursen. Det gäller speciellt avsnitt 8.6 om flerdimensionella fält, avsnitt 9.3 om att växla mellan teckenfält och stringobjekt, avsnitt 10.7 om rekursiva funktioner, avsnitt 11.10 om pekararitmetik samt avsnitt 14.8 om klassmedlemmar. Det går också bra att helt skippa kapitel 13 och 14 om begreppet objektorientering inte ingår i kursen.

Visar 1 inlägg (av 1 totalt)
  • Du måste vara inloggad för att svara på detta ämne.