Lektion 5 (5 sep)

Metodanrop

Läsanvisningar

Läs följande texter med betoning på anrop av metoder ("calling methods") snarare än deklaration av methoder ("declaring methods").

Instruktioner

När man kör ett program som jobbar med kommandoraden så stängs kommandoradsfönstret ner direkt när programmet har kört klart, även om det finns text för användaren att läsa. Detta gör det svårt att undersöka resultatet av såna program, men det finns åtminstone tre sätt att åtgärda detta.

Det första sättet är att alltid sätta en brytpunkt på programmets sista rad. Då kan man alltid titta på kommandoradsfönstret som öppnas och se samtlig utdata från programmet.

Det andra sättet är att lägga till följande rad i slutet av programmet: Console.ReadLine(). Detta gör att programmet avslutas först när användaren trycker Enter, vilket i sin tur innebär att man får hur mycket tid man vill till att undersöka utdatan.

Det tredje sättet är att lägga till alternativet Start Without Debugging till menyraden i Visual Studio. När ett program körs utan debugging ser Visual Studio automatiskt till att det inte avslutas förrän användaren trycker Enter (eller annan tangent). Dock är det inte längre möjligt att stega genom programmet och använda andra funktioner i debuggern. För att lägga till detta alternativ, följ instruktionerna nedan:

Klicka på nedåtpilen till höger om Start-kommandot i menyraden och välj Add or Remove Buttons > Customize....

Klicka på Add Command....

Välj Debug under Categories, välj sedan Start Without Debugging under Commands och klicka slutligen på OK.

Placera det nya kommandot på lämplig plats (exempelvis till höger om Start-kommandot) genom trycka på Move Down tills det sitter där du vill ha det.

Övningar

Lösningsförslag

  1. Skriv ett program som läser in ett namn från användaren och skriver ut en hälsning. Om användaren exempelvis matar in "Jakob" ska programmet skriva ut Hello Jakob!.
  2. Skriv ett program som läser in två heltal från användaren och sedan skriver ut summan av dem. Om användaren exempelvis matar in "2" och "5" ska programmet skriva ut 7.
  3. Skriv ett program som läser in två heltal från användaren och sedan skriver ut det största av dem. Om användaren exempelvis matar in "2" och "5" ska programmet skriva ut 5. Skriv ditt program utan att använda if-satser eller loopar.
    • Skriv en variant av programmet som läser in tre heltal och skriver ut det största av dem. Om användaren exempelvis matar in "2", "5" och "9" ska programmet alltså skriva ut 9.
    • Skriv en variant av programmet som läser in heltal tills användaren matar in "OK" och sedan skriver ut det största av heltalen. Om användaren exempelvis matar in "2", "5", "9", "7" och "OK" ska programmet alltså skriva ut 9. Du kan anta att användaren kommer att mata in åtminstone ett heltal. Till detta program kan du använda loopar men inte if-satser.
  4. Skriv ett program som läser in två namn och två åldrar från användaren. Programmet ska sedan skriva ut åldersskillnaden mellan de två personerna. Om användaren exempelvis matar in "Will" och "48" samt "Brad" och "53" så ska programmet skriva ut Det är 5 år mellan Will och Brad.. Programmet ska aldrig skriva ut ett minustal före åldersskillnaden. Skriv ditt program utan att använda if-satser eller loopar. Välj en eller flera lämpliga matematiska metoder för detta syfte.
  5. Skriv ett program som beräknar mängden pengar på ett sparkonto med 5% ränta efter ett antal år. Programmet ska läsa in ett startkapital (hur mycket pengar som kontots ägare började med), och antalet år som pengarna ska sparas. Det ska sedan skriva ut mängden pengar på sparkontot efter att så många år har gått med 5% ränta. Skriv ditt program utan att använda if-satser eller loopar. Välj en eller flera lämpliga matematiska metoder för detta syfte. Formeln för att beräkna mängden pengar är följande:

  6. Skriv ett program som skapar en array av strängar (denna gång direkt i källkoden, inte genom att läsa från användaren). Programmet ska sedan skriva ut dessa ord åtskilda med snedsträck. Om arrayen exempelvis innehåller strängarna { "Path", "To", "Photo.jpg" } så ska programmet skriva ut Path/To/Photo.jpg. Ledtråd: String.Join.
  7. Sök på nätet efter ett valfritt flödesschema för beslutsfattande ("decision flowchart") och skriv ett program som återskapar detta genom att ställa frågor till användaren och läsa in svaren.
    • För enkelhets skull behöver du inte bry dig om felhantering om användaren matar in svar som inte finns i flödesschemat.
    • Om du inte hittar något bra flödesschema kan du rita upp ett eget eller använda följande exempel:
    • Har ditt flödesschema några vägar som går att följa i oändlighet? Klarar programmet av detta? Om ja, hur då? Om nej, vad skulle behövas för att kunna återskapa detta?
    • Överkurs: Skriv en variant av programmet som klarar av oändliga vägar, utan att skriva någon kod utanför Main.