Sammenlign og byt Et eksempel på dokumentering af et program
Sammenlign og byt Jeg har valgt, som et eksempel, at dokumentere et meget enkelt program som indlæser to tal, sammenligner dem og udskriver dem i modsat rækkefølge hvis det sidste er mindre end det første. Jeg har som udgangspunkt valgt at stille følgende krav til programmet: -Det skal indlæse to tal fra tastaturet (programmets default input) til variablerne a og b. -Det skal sammenligne de indlæste tal og -det skal udskrive dem, således at det største tal kommer sidst. Programmet sorterer således tallene.
Dokumentationens opbygning For at dokumentere programmets design, funktion og udvikling skal vi i gennem følgende punkter: 1.Beskrivelse i prosa, på Dansk!, af kærneproblemet, altså det problem som du skulle løse for at komme i gang med programmeringen af den første prototype. (Dette krav er inspireret af "Bottom Up" tilgangen til programmering.) 2.Plan for brugerfladen for programmet (UI eller GUI). Beskriv i tekst og lav mindst een håndtegnet, ikke med en computer, skitse. Scan den ind og brug som illustration af din tidlige ide om UI. 3.Input. En beskrivelse, detaljeret, af input (inddata) til programmet. Hvilke data, deres datatype og mening for brugeren. 4.Operationer på inddata. Beskrivelse, detaljeret, af de operationer som programmet skal udføre på inddata. 5.Output. Beskrivelse, detaljeret, af output (uddata) fra programmet. Hvilke data, deres datatype og mening for brugeren. 6.Flowchart (rutediagram) som viser programmets logiske opbygning/struktur. (Flowcharting, flowchart, brug gerne programmet Dia fra http://projects.gnome.org/dia/) 7.Kildekoden for det færdige program. 8.Skærbilleder som viser/dokumenterer hvordan det færdige program bruges/virker. 9.Dokumentation af forløbet med skærmbilleder og kommentarer/forklaringer. 10.Diskussion/beskrivelse af de sætninge (statements) i Python som du har brugt i dit program.
Beskrivelse af kærneproblemet Jeg synes at kærneproblemet i denne opgave er at kunne afgøre om et tal er større end et andet. Vi afprøver følgende kode i et Python script: a=2 b=1 if b<a: print "b er mindre end a, eller sagt på anden måde, a er større end b." Og det giver følgende resultat i Python shellen: >>> ================================ RESTART ================================ >>> b er mindre end a, eller sagt på anden måde, a er større end b. >>> Og vi afprøver hvad der sker hvis vi bytter værdierne for variablerne a og b. Det giver følgende resultat: >>> ================================ RESTART ================================ >>> >>> Altså intet output fra programmet, som vi forventede, fordi betingelsen b<a ikke er opfyldt og derfor eksekveres ikke print sætningen. Nu har vi altså løst kærneproblemet, det vil sige at vi kan afgøre om et tal er større, eller mindre, end et andet tal.
Plan for brugerfladen for programmet Programmet vil køre i text-mode. Jeg forestiller mig at programmet skal prompte brugeren for de to tal på følgende måde: a: 3 b: 1 Hvor brugeren har indtastet tallene 3 og 1. De indtastede tal kan være heltal (integers) eller kommatal (floating point numbers). Dernæst skal programmet udskrive tallene i en voksende, sorteret!, rækkefølge. For eksempel som: b: 1 a: 3 Dernæst afsluttes programmet.
Input Beskrivelse af inddata Input til programmet er de to talværdier som tildeles til variablene a og b. De kan være heltal eller kommatal.
Operationer på inddata Programmet skal sammenligne de to tal, altså værdierne i variablene a og b, og afgøre hvilket af dem er mindst. Der udføres ingen regneoperationer i programmet!
Output - Beskrivelse af uddata Programmets output forventer jeg at bliver følgende: b: 1 a: 3 Altså hvis brugeren indtaster 3 for variablen a og 1 for b. Hvis brugeren indtaster 1 for a og 3 for b, så skal uddata se ud som her: a: 1 b: 3 Uddata bestor altså af to linier. Hver linie starter med en tekststræng og så kommer tallet, som kan være heltal eller kommatal.
Flowchart - programmets logiske opbygning/struktur Dette rutediagram er lavet med tegneprogrammet Dia.
asdf Kildekoden for det færdige program
asdf Skærbilleder - det færdige programs funktion
asdf Dokumentation af udviklingsforløbet
asdf Diskussion/beskrivelse af brugte sætninge (statements) i Python