bild
Tillbaka till Rapp Början Top Upp Föregående Nästa

E. Betygstyper och formler i Rapp

Rapp hanterar betyg på hel kurs, kursmoment och delmoment men även andra data för delmoment.

Det finns 5 sorters data:

  1. Bokstavsbetyg, t.ex. F-A, F,P, U,G, 1-5 etc. Kurs- och momentbetyg som ju rapporteras in i Ladok måste vara av denna typ.
  2. Poäng som antingen är heltal eller flyttal.
  3. Text: godtycklig text som antingen är max 20 tecken eller godtyckligt lång.
  4. Datum: Tid med minuter, början av dag, slutet av dag.
  5. Person: Allmän person, handledare, examinator.

Rapp kan använda formler för att beräkna betyg. Internt arbetar formler huvudsakligen med flyttal. Datum, bokstavsbetyg och poäng konverteras till flyttal. Text och person konverteras inte, därför kan formler inte göra mycket med dem. Resultatet konverteras, vid behov, till bokstavsbetyg, poäng resp datum.
Datatyper i formler:

  1. Text och person. Dessa kan hämtas från ett delmoment till ett annat. Inga aritmetiska operationer kan görs med dem.
  2. Datum. Samma aritmetiska operationer som kan göras med bokstavsbetyg kan göras med datum.
  3. Bokstavsbetyg. Endast kompatibla bokstavsbetyg kan blandas. Kompatibla är betygstyper som direkt motsvarar varandra, för närvarande endast F,P och U,G, eller betygstyper som är delar av samma grundmängd, t.ex. F,E,C,A, F,E,D och F-A är kompatibla.
  4. Poäng. Dessa innefattar booleska värden, 0 (abs < 0.0001) är falskt och allt annat sannt. Logiska operatorer och funktioner returnerar 0 för falskt och 1 för sannt.
Olika datatyper är ej kompatibla.

En kurs består av kurs, ett antal moment med delmoment och subdelmoment och subsubdelmoment ... Var och en av dessa ses som en kolumn för att mata in resultat. Varje kolumn kan ha en formel. En kolumn med formel kan eventuellt ha en transformations- eller avrundningsvektor (ett antal heltal eller flyttal separerade med blank).

Formler byggs upp av paranteser och följande operatorer (i prioritetsordning från lägst till högst)

Operator Namn Exempel Värde Datatyper
:= tilldelning X:=Y Värde Y. Sidoeffekt: Variabeln X får värde Y X är variabelnamn. Y har godtyckligt värde
? : villkor X?Y:Z Y om X sann, annars Z X:poäng, Y och Z kompatibla
or eller X or Y 1 om X eller Y sannt, annars 0 poäng
and och X and Y 1 om X och Y är sanna, annars 0 poäng
not not not X 1 om X falsk, annars 0 poäng
==, !=, <, >, <=, >= jämförelse För bokstavsbetyg, poäng och datum används aritmetisk jämförelse. X==Y omm abs(X-Y)<0.0001. För text används lexikografisk jämförelse. För person kan endast == och != användas. Höger- och vänsterled måste vara kompatibla.
+, - additiva
  • Datum kan ej adderas men skillnaden är ett antal dagar. T.ex. 2010-11-02 - 2010-10-30 = 3
  • Bokstavsbetyg kan ej adderas men skillnaden mellan kompatibla bokstavsbetyg är poäng: antalet betygssteg. T.ex. A-C=2.
  • I bokstavsbetyg + poäng är poäng antal betygssteg. T.ex. C+2=A och C-1=D.
  • I datum + poäng är poäng antal dagar. T.ex. 2010-10-30 + 3 = 2010-11-02
  • datum + betygssteg är ej tillåtet.
  • Parsning av en summa klarar inte av mer än två bokstavsbetyg eller datum. Det är dock möjligt att lägga till flera skillnader mellan datum eller bokstavsbetyg om dom omges av paranteser så att dom parsas separat.
*, **, /, // multiplikativa X**Y betyder X upphöjt till Y.
X//Y är heltalsdivision: trunc(X/Y)
Endast poäng är tillåtna
- unär minus -X negerar X Poäng
idag returnerar datum då formeln används
ejbetyg returnerar 0 och information att betyg saknas
Poäng Poäng är en följd av siffror och eventuellt en '.'
Variabel Ett variabelnamn är en sträng som börjar med en bokstav och är följd av ett antal boksäver och siffror. Alla namn kan användas, utom namn på funktioner eller "idag" eller "ejbetyg".
inbyggda funktioner se nedan

Inbyggda funktioner:

I följande beskrivning betyder RESULTAT referens till resultat för ett moment eller delmoment på följande format:
MOMNMN eller MOMNMN.DELNMN eller MOMNMN.DELNMN.DELNMN ... där MOMNMN är kod för ett moment eller namn för en momentomgång och DELNMN är namn eller kortnamn för ett delmoment. MOMNMN och DELNMN kan bestå av alla tecken utom '.', '%' eller ')'
VARIABELNAMN beskrivs under Variabel ovan.
Argumentens tillåtna dattyper beskrivs av P(poäng), B(bokstavsbetyg), T(text), D(datum), A(alla 5 datatyper).
Funktion Argumenttyp Beskrivning
datum(YYYY-MM-DD) Datumsträng är en datumkonstant. Exempel: datum(1984-11-03)
betygkonst(BETYG) Betygsträng returnerar bokstavsbetygkonstant. Vilken sorts bokstavsbetyg betygkonstanten gäller bestäms av omgivningen. Exempel: betygkonst(C)
betygdat(RESULTAT) PBT returnerar betygsdatum för RESULTAT. ejbetyg om RESULTAT ej finns.
haemta(RESULTAT) A returnerar data för RESULTAT. Returnerar ejbetyg om RESULTAT ej finns.
betygalla(RESULTAT) PB returnerar betyg för RESULTAT. Returnerar ejbetyg om RESULTAT ej finns.
betyg(RESULTAT) PB returnerar betyg för RESULTAT. Returnerar ejbetyg om RESULTAT ej finns. Om ej godkänt returnerar 0 om betygstyp Poäng men returnerar ejbetyg om bokstavsbetyg.
betygsteg(RESULTAT) PB returnerar poäng motsvarande (betyg(RESULTAT)-betygkonst(GODKÄNT)+1) om RESULTAT är godkänt, 0 om ej godkänt och ejbetyg om RESULTAT ej finns. Observera att funktionen returnerar poäng både om betyg(RESULTAT) har betygstyp poäng eller bokstavsbetyg.
bonus(RESULTAT) PBT returnerar ejbetyg om RESULTAT ej finns, returnerar 1 om godkänt RESULTAT innom bonustidsgräns, 0 annars.
godk(RESULTAT) PBT returnerar ejbetyg om RESULTAT ej finns, returnerar 1 om godkänt RESULTAT, 0 annars. För argument Text är detta ekvivalent med funktionen finns.
finns(RESULTAT) A returnerar 1 om RESULTAT finns, ejbetyg annars.
dagarsen(RESULTAT) PBT returnerar ejbetyg om RESULTAT ej finns, 0 om ej godkänt RESULTAT, 0 om i tid, annars antal dagar sen. Måste användas tillsammans med godk.
trunc(X) P
round(X) P
bind(E1,V1,E2,V2...En,Vn,Ex) där E1, E2 ... En, Ex är uttryck som skall evalueras och V1, V2 ... Vn är VARIABELNAMN. V1 binds till värdet av E1 och V2 binds till värdet av E2 etc. Värdet av Ex blir värdet av bind-funktionen. Då värdet av E2 beräknas kan värdet av V1 användas i var-funktionen, då E3 beräknas kan V1 och V2 användas osv. Då värdet av Ex beräknas kan alla variablerna användas. Alla Ex kan vara godtyckliga datatyper
var(VARIABELNAMN) A returnerar värdet bundet till VARIABELNAMN i en omgivande bind-funktion. OBS! Denna funktion är obsolet! Nu det räcker med endast VARIABELNAMN i stället för var(VARIABELNAMN).
sum(X,Y,Z...) P X+Y+Z... Denna funktion är ekvivalent med operatorn + ovan. Funktionen finns huvudsakligen för att användas med pseudoargumentet %val nedan. OBS! en skillnad mot + är att alla argument måste vara Poäng.
prod(X,Y,Z...) P X*Y*Z... Denna funktion är ekvivalent med operatorn * ovan. Funktionen finns huvudsakligen för att användas med pseudoargumentet %val nedan.
min(X,Y,Z...) PBD minimum av X,Y,Z... X,Y,Z... måste vara kompatibla OBS! ejbetyg är mindre alla andra resultat. Därför blir resultatet ejbetyg om något av X,Y,Z... är ejbetyg.
max(X,Y,Z...) PBD maximum av X,Y,Z... X,Y,Z... måste vara kompatibla. OBS! ejbetyg är mindre alla andra resultat. Därför blir resultatet ej ejbetyg om något av X,Y,Z... är ej ejbetyg.
median(X,Y,Z...) PBD returnerar medianen av X,Y,Z... Om jämt antal argument returnerar medelvärdet av de två mittersta. X,Y,Z... måste vara kompatibla. Returnerar ejbetyg om något av de ett eller två element som ingår i resultatet är ejbetyg.
medel(X,Y,Z...) PBD returnerar medelvärdet av X,Y,Z... X,Y,Z... måste vara kompatibla. Returnerar ejbetyg om ej betygstyp Poäng och någon av X,Y,Z... är ejbetyg eller om betygstyp Poäng och alla av X,Y,Z... är ejbetyg.
viktmedel(a,X,b,Y,c,Z...) PBD returnerar (a*X+b*Y+c*Z....)/k där k=a+b+c+... X,Y,Z... måste vara kompatibla. a,b,c... får vara poäng kombinerade med aritmetiska uttryck men ej innehålla funktioner. Regler för ejbetyg är samma som för medel.
Funktionerna sum, prod, min, max, median och medel kan modifieras med ett första pseudoargument. Hur det fungerar ses av följande exempel:
Evaluering av sum(%val(n,m),X0,X1,X2,...Xp) går i följande steg:
  1. Evaluera argumenten X0,X1,...Xp
  2. Sortera värdena i fallande ordning dvs med det största värdet först. Värdena är nu Y0,Y1,...Yp där Y0 är det största värdet
  3. Välj ut värdena Yn,...Y(n+m-1)
  4. Om n+m-1 > p så blir det ett parsningsfel
  5. Returnera sum(Yn,...Y(n+m))
Man kan i detta exempel byta ut sum mot vilken som helst av funktionerna prod, min, max, median och medel.
Det finns ett liknande pseudoargument för viktmedel:
viktmedel(%val(n,a1,a2,...am),X0,X1,X2,...Xp) evalueras så här:
  1. Evaluera argumenten X0,X1,...Xp
  2. Sortera värdena i fallande ordning dvs med det största värdet först. Värdena är nu Y0,Y1,...Yp där Y0 är det största värdet
  3. Välj ut värdena Yn,...Y(n+m-1)
  4. Om n+m-1 > p så blir det ett parsningsfel
  5. Returnera viktmedel(a1,Yn,a2,Y(n+1),...am,Y(n+m-1))

Resultat av formel

Resultat är någon av de 5 datatyperna. För att stoppa in resultet i Rapps tabeller måste det konverteras tillbaka till rätt sorts betyg. Text, datum och person kan ej konverteras, formeln måste direkt ge rätt datatyp men det går att konvertera mellan bokstavsbetyg och poäng med hjälp av en transformations- eller avrundnings-vektor som lagras tillsammans med formeln.

Följande gäller:

FormelMålKommentar
Text Text Om mål är "Liten" text och Formelresultat är "Stor" text blir det ett parsningsfel. Alla andra kombinationer av "Stor" och "Liten" text är rätt.
Poäng Poäng Om mål är heltal används första (enda) elementet i en avrundningsvektor för avrundning.
Poäng Bokstav Transformationsvektor måste finnas. Vektor består av mellanslagsseparerade poänggränser för varje betyg med högsta betyg först och lägsta betyg sist. Exempel 25 21 17 13 10 7. Om målet endast accepterar godkända betyg måste gränser för alla godkända betyg finnas. Om även underkända accepteras, kan betygsgränsen för lägsta betyg utelämnas, den blir då 0. Observera att det i flera betygstyper finns två underkända betyg Fx och F. Transformationsvektorn används från vänster till höger, vilket betyder att om t.ex transformationsvektorn ser ut så här: 25 21 15 15 10 7 0 för betyg A,B,C,D,E,Fx,F så får ingen betyg D, då poäng ≥ 15 ger minst betyg C och betyg < 15 ger högst betyg E.
Bokstav Poäng Ej tillåtet. Kan dock åstadkommas med betygsteg.
Bokstav Bokstav Formel och mål måste vara kompatibla. Formelns resultat transformeras med en avrundningsvektor. En avrundningsvektor består av mellanslagsseparerade tal X (0 < X ≤ 1) i ordning från högsta till lägsta betyg. X anger hur många betygssteg som behövs för att höja från närmsta lägre betyg till det aktuella betyget. T.ex. om värdet för B är 0.4 så gäller C+0.4=B. En avrundninsgvektor måste inte ha ett värde för alla betyg, det sista värdet används för återstående betyg. Om det saknas en avrundningsvektor, används en vektor som lagras för varje typ av bokstavsbetyg. Denna vektor har värdet 0.99, dvs formelresultatet trunkeras ner till bokstavsbetyg.

Exempel

I följande exempel har vi ett moment LAB1 med ett antal delmoment. LAB1 har en formel som räknar ut betyget samt i vissa exempel en transformations- eller avrundningsvektor.
(Del)moment Betygstyp Formel Transformations / avrundnings - vektor
Betyder
moment LAB1
delmoment L1, L2 och L3
ECTS2(F,P)
ECTS2(F,P)
min(betyg(LAB1.L1), betyg(LAB1.L2), betyg(LAB1.L3))
Om L1, L2, L3 alla är P dvs godkända så är LAB1 godkänt
moment LAB1
delmoment L1, L2 och L3
ECTS(F-P)
ECTS(F-P)
medel(betyg(LAB1.L1), betyg(LAB1.L2), betyg(LAB1.L3)) 0.6
Betyget för LAB1 är medelvärdet för betygen för L1, L2, L3.
Avrundningsvektorn 0.6 gör att C, C, D ger betyg C.
I stället för funktionen medel kan vi använda funktionerna viktmedel, median, min, eller max.
moment LAB1
delmoment L1
ECTS(F-P)
Poäng max 30
betyg(LAB1.L1) 28 25 22 19 15
Returnerar poäng som vi transformerar till F-A med en transformationsvektor.
moment LAB1
delmoment L1, L2, L3, X1, X2, X3 och X4
ECTS(F-P)
ECTS2(F,P)
godk(LAB1.L1) * godk(LAB1.L2) * godk(LAB1.L3)? (godk(LAB1.X1) + godk(LAB1.X2) + godk(LAB1.X3) + godk(LAB1.X4)+1): ejbetyg 5 4 3 2 1
L1, L2 och L3 är obligatoriska samt X1, X2, X3 och X4 är extrauppgifter som bestämmer betyget. Konstanten ejbetyg betyder ej betyg.
Kontakt: <Rapp-support>