Lektion 6 (7 sep)

Metoddeklarationer

Läsanvisningar

Övningar

Lösningsförslag

  1. Gå tillbaka till valfri tidigare övning som använder indata och utdata och skriv om din lösning så att den har en egen metod som utför samtliga beräkningar. Inuti Main ska programmet enbart anropa metoden ett par gånger, med olika kombinationer av indata varje gång. Gör detta för en eller ett par av de tidigare övningarna. Övning 4 från lektion 1 är ett passande exempel, men de flesta andra övningarna är också lämpliga.

    Exempelvis skulle vi kunna skriva om övning 2 från lektion 2 (betygsätta en tenta) på följande sätt:

    1. static void Main(string[] args)
    2. {
    3. string grade1 = Grade(15);
    4. string grade2 = Grade(27);
    5. string grade3 = Grade(42);
    6. }
    7. static string Grade(int score)
    8. {
    9. // Betygsnivåer: G 20, VG 40
    10. if (score < 20) {
    11. return "IG";
    12. }
    13. else if (score < 40) {
    14. return "G";
    15. }
    16. else {
    17. return "VG";
    18. }
    19. }
  2. Skriv ett program som läser in en temperatur (i grader Celsius) och en ljudnivå (i decibel). Skriv sedan följande metoder som ger information kring dessa värden:

    • IsWarm, som returnerar true om temperaturen är mellan 18 och 26.
    • IsQuiet, som returnerar true om ljudnivån är 45 decibel eller lägre.
    • IsHabitable, som returnerar true om temperaturen är mellan 18 och 26 och ljudnivån är 45 decibel eller lägre.

    När ditt program är klart ska man kunna använda metoderna på exempelvis följande sätt:

    1. double temperature = 25;
    2. double volume = 67;
    3. bool w = IsWarm(temperature);
    4. bool q = IsQuiet(volume);
    5. bool h = IsHabitable(temperature, volume);
  3. Skriv en klass för personer med följande information: förnamn, efternamn, ålder och inkomst (i kronor per år). Skriv sedan följande metoder som arbetar med personer:

    • FullName, som returnerar personens fullständiga namn som en enda sträng.
    • CanMarry, som returnerar true om personen är 18 år eller äldre.
    • FederalIncomeTaxRate, som returnerar skattesatsen för statlig inkomstskatt som personen behöver betala. Denna är 20 % för inkomster över 438 900, 25 % för inkomster över 638 500 och 0 % annars. (Metoden ska alltså returnera antingen 0.2, 0.25 eller 0.)

    När ditt program är klart ska man kunna använda metoderna på exempelvis följande sätt:

    1. Person p = new Person { ... };
    2. string n = FullName(p);
    3. bool m = CanMarry(p);
    4. double t = FederalIncomeTaxRate(p);

    Använd statiska metoder till detta, alltså av samma sort som vi har använt hittills. Instansmetoder börjar vi med nästa vecka.

  4. Skriv en klass för personer med följande information: namn, ålder, förmögenhet (i kronor) och lön (i kronor per månad). Skriv sedan följande metoder som arbetar med personer:

    • PaySalary, som ökar personens förmögenhet med en månads löneutbetalning.
    • WinLottery, som ökar personens förmögenhet 10 000 kronor.
    • CelebrateBirthday, som ökar personens ålder med ett och ger personen 500 kronor i födelsedagspresent.
    • ShowPerson, som skriver ut samtlig information om personen.

    När ditt program är klart ska man kunna använda metoderna på exempelvis följande sätt:

    1. Person p = new Person { ... };
    2. PaySalary(p);
    3. CelebrateBirthday(p);
    4. WinLottery(p);
    5. ShowPerson(p);

    Om personen från början exempelvis heter Anders, är 25 år, har en förmögenhet på 50 000 kronor och har en lön på 20 000 kronor så ska detta program alltså skriva ut följande: 26-åriga Anders har en lön på 20000 kronor och 80500 kronor på banken.

    Använd statiska metoder till detta, alltså av samma sort som vi har använt hittills. Instansmetoder börjar vi med nästa vecka.

  5. Skriv ett program med en egen metod IsLarge som bedömer om ett värde är "stort" enligt godtyckliga kriterier. Denna metod ska fungera med flera typer av värden och kriterierna för dessa typer kan vara olika. Exempelvis skulle en sträng kunna anses stor om den innehåller fler än 50 tecken, medan ett heltal skulle kunna anses stort om det är större än 1000.

    När ditt program är klart ska man kunna använda metoden på exempelvis följande sätt:

    1. bool a = IsLarge("abc");
    2. bool b = IsLarge(12345);
  6. Skriv om din lösning på övning 7 från lektion 5 så att den klarar av diagram med vägar som går att följa i oändlighet, denna gång med hjälp av egna metoder.