Mutation, selektion, scope
Lektion 1 Lektion 3Läsanvisningar för lektion 3 och lektion 4 finns nu tillgängliga. Lösningförslag finns nu också för lektion 2.
Skapa ett nytt projekt med File > New > Project... > Console App (.NET Framework) > OK. Skriv sedan all din kod i filen Program.cs, på platsen som anges i exemplet nedan:
När du är klar med en övning och går vidare till nästa kan du antingen klippa ut din lösning och spara i en separat textfil (för att ha tillgång till den senare vid behov), alternativt "kommentera ut" koden till lösningen genom att sätta // i början av varje rad (vilket menykommandot Edit > Advanced > Comment Selection gör automatiskt för en hel markering).
När du kör programmet med Start-kommandot kommer ingenting att ske. För att inspektera värdet på variablerna i ditt program, sätt en brytpunkt på raden före din kod (som visas i exemplet ovan) och stega genom programmet med Step Over för att se vad som händer steg för steg. Vid behov kan du läsa mer om debuggern.
I övrigt kan du använda samma upplägg för dina program som i tidigare övningar: skapa variabler för att lagra indata och skapa en resultatvariabel för att lagra utdata. (Om du från tidigare erfarenhet känner till andra sätt att ta emot indata och utdata får du använda dessa, men de är inte på något sätt obligatoriska. Vissa av dagens lärdomar kräver dessutom att du använder just variabler till utdata, så du uppmuntras att göra det oavsett.)
Samma tips gäller som för tidigare övningar, men i synnerhet dessa:
true i variabeln authorized om strängen är "secret123", annars false. Detta är samma övning som övning 2 från lektion 1, men använd denna gång if-satser till att skriva programmet.
if och else samt en variant som enbart använder if.grade. Du bestämmer själv vilka betygsnivåer som gäller.
"ogiltigt" och ett antal poäng högre än det maximala antalet på tentan (som du bestämmer själv) ger betyget "fusk!".Skatteverket vill ha ett program som underlättar deras handläggares arbete genom att sammanfatta information om en enskild person ur folkbokföringen på en enda rad text. De har lämnat in följande informella specifikation som beskriver det önskade beteendet:
Vi vill visa en sammanfattad version av diverse data, med kommatecken varje enskild post. I de fall där ett värde ska utelämnas (detaljer nedan) ska också tillhörande kommatecken utelämnas.
Samtliga rader ska inledas med personens kön och ålder. Efter detta ska personens civilstånd visas: antingen "gift" eller "ogift". (I databasen som vi använder till detta vet vi bara "ja/nej" om personen är gift eller inte.)
Följande två poster ska i vissa fall utelämnas. Om personen har barn ska antalet barn visas, annars ska denna post helt utelämnas. Om personen har bil ska bilens registreringsnummer visas, annars ska denna post helt utelämnas.
Detta beskrivs bäst med några exempel, som följer nedan.
30-årig gift man utan barn och med bil:
man, 30, gift, reg: ABC12345-årig ogift kvinna med två barn och bil:
kvinna, 45, ogift, 2 barn, reg: ABC12321-årig ogift man utan barn och utan bil:
man, 21, ogift
Skriv ett program som framställer denna rad text baserat på personuppgifterna i indatan och sparar resultatet i variabeln summary. Programmet ska ha följande indata: kön (som sparas i variabeln gender), ålder (som sparas i variabeln age), äktenskapsstatus (som sparas i variabeln married), antal barn (som sparas i variabeln children) och eventuellt registreringsnummer (som sparas i variabeln car).
En fiktiv regering vill införa omfattande nya skatteregler för individer med målet att uppmuntra miljövänliga åtgärder. Regeringen har lämnat in följande utkast som beskriver de nya reglerna:
Samtliga nuvarande skatteregler ska behållas, och dessa nya regler ska appliceras först efter att den ordinarie skattesumman har beräknats. Följande regler ska appliceras i den ordning som de beskrivs i detta förslag.
Individer som inte äger någon bil ska få sin skatt halverad. Individer med mer än en bil (förutom elbilar) ska få skatten höjd med 2.000 kr per icke-eldrivna bil utöver den första. Individer med elbil ska få en skatterabatt på 1.000 kr, oavsett antalet elbilar.
Individer som har gjort två eller fler utlandsresor med flyg under året ska få skatten höjd med 20%. Undantaget är individer med familjemedlemmar bosatta utomlands.
Slutligen ska samtliga individer få en skattesänkning baserat på boendeform: 500 kr för villa och 1.000 kr för övriga boendeformer.
Det ska inte vara möjligt att få "negativ skatt" efter att dessa regler har applicerats.
Skriv ett program som beräknar den totala summan skatt som en individ ska betala utifrån dessa nya regler.
Programmets indata kan vara antingen individens lön före skatt eller den skattesumma som gäller för individen innan de ny reglerna har applicerats. (I det tidigare fallet, anta att den vanliga skattesatsen – innan de nya reglerna har applicerats – är 30%.) Övrig indata ska vara värden som beskriver individens hushåll och livsstil. Du kommer att behöva flera variabler med indata som senare kan varieras för att testa olika kombinationer, men du väljer själv vilka dessa variabler bör vara och vilka typer de bör ha. Programmets utdata ska vara en variabel som innehåller den totala summan skatt för individen efter att de nya reglerna har applicerats.
Skriv om följande program till ett booleskt uttryck (alltså helt utan if-satser) som för samma kombination av indata alltid ger samma utdata som programmet.
if på rad 18 mot else if? Om ja, hur då? Om inte, varför inte?&&).
?:).