Gå til hovedindhold

TuT Kodeflow

Tech uden Tech øvelser - Denne artikel er en del af en serie.
Del 5: Denne artikel

Læringsmål
#

De studerende kan efter aktiviteten:

  • Følge et programs eksekveringsflow trin for trin uden at køre koden
  • Forudsige output fra metodekald, herunder kald der kalder andre metoder og evt metoder der kaster Exceptions
  • Forklare hvordan returværdier flyder tilbage til kaldestedet

Forudsætninger
#

De studerende forventes at kende til:

  • Metodedefinition og metodekald i Java
  • System.out.println
  • if/else
  • Returværdier fra metoder
  • evt Exceptions

Kort beskrivelse
#

Parrene får udprintet kode og skal manuelt trace hvad programmet printer — linje for linje, uden at køre det. De skriver output ned på papir. Det centrale kognitive arbejde er at følge metodekald på tværs af klassen, herunder kald der kalder andre metoder og returnerer værdier der printes.

Aktiviteten er særligt velegnet som modsvar til studerende der stoler på AI til at skrive kode for dem. At trace kode kræver forståelse for hvordan flow i kode fungerer.

Faglig kontekst
#

  • Semester/fag: 1. semester, objektorienteret programmering
  • Holdstørrelse: Skalerer til store hold
  • Organisering: Par

Trin-for-trin
#

  1. Underviseren introducerer aktiviteten og forklarer hvad “trace” betyder: følg koden som en computer ville.
  2. Parrene får printet Flow.java og MainFlow.java.
  3. De tracer main-metoden fra top til bund og skriver det forventede output ned.
  4. Fælles gennemgang: underviseren kører koden og sammenligner med parrenes output.
  5. Diskussion: hvor gik det galt? Hvad overraskede jer?

Materialer
#

  • Flows.java. Klassen med metoderne A–D. Skal printes og gøres tilgængeligt elektronisk.
  • MainFlow.java Main-metoden der kalder metoder i Flows. Skal printes og gøres tilgængeligt elektronisk.
  • Blyanter og papir til at skrive løsning ned.

Tidsforbrug
#

Kan afvikles på 30–45 min. inkl. opsamling.

Modtagelse
#

En studerende udbrød begejstret “YES! Computeren udskriver det samme som mig. Jeg ER computeren!”. De studerende blev bekræftet i at de kunne forstå hvordan kode eksekverer - eller at de ikke kunne og havde misforståelser om flow.

Udvidelser
#

  • Tilføj en version med løkker (for/while) som ekstra sværhedsgrad
  • Lav en variant hvor én linje er forkert — de skal finde fejlen ved at trace
  • Tilføj Exceptions med ExceptionsDemo.java og MainException.

Noter til underviseren
#

Det typiske fejlmønster er at studerende glemmer at metodekald afbryder den aktuelle metodes flow og vender tilbage bagefter. System.out.println(methodC(input)) er særligt snedigt: methodC printer selv e, f, h (via methodD) inden returværdien printes — det overrasker mange.

Det er også værd at fremhæve at MainFlow selv printer metodekaldene som strenge (f.eks. flows.methodA("Hello, world");) — det er ikke Java-magi, bare println med en String-literal.

Puslespillet samles
Tech uden Tech øvelser - Denne artikel er en del af en serie.
Del 5: Denne artikel