Bearbeiten von „Notenberechnung

Zur Navigation springen Zur Suche springen

Warnung: Du bist nicht angemeldet. Deine IP-Adresse wird bei Bearbeitungen öffentlich sichtbar. Melde dich an oder erstelle ein Benutzerkonto, damit Bearbeitungen deinem Benutzernamen zugeordnet werden.

Die Bearbeitung kann rückgängig gemacht werden. Bitte prüfe den Vergleich unten, um sicherzustellen, dass du dies tun möchtest, und veröffentliche dann unten deine Änderungen, um die Bearbeitung rückgängig zu machen.

Aktuelle Version Dein Text
Zeile 52: Zeile 52:


=== Implementierung ===
=== Implementierung ===
==== Calc ====
Ein Spreadsheet mit einem Chart, dass die Spreizung der moeglichen Note zeigt, gibt es hier: [[Medium:DPO98-Noten-Chart.ods]]
==== Perl ====
<code>
<code>
  #!/usr/bin/perl
  #!/usr/bin/perl
Zeile 78: Zeile 74:
  );
  );
   
   
  print "$endnote (".('ausgezeichnet','sehr gut','gut','befriedigend','ausreichend')[int((int((int($endnote * 10) - 6) / 5) * 3 + 4) / 5)].")\n";
  print "$endnote\n";
</code>
</code>
==== Python ====
<pre>
#!/usr/bin/env python
# Copyright: 2011 Tobias Mueller <4tmuelle@informatik.uni-hamburg.de>
# License: GPLv3+
import math
def gerundeter_schnitt(*noten):
    schnitt = (1.0 * sum(noten)/len(noten))
    gerundet = int(math.floor(schnitt * 10))
    return gerundet/10.0
def get_dipl_noten_text(dipl_note):
    translations = (
    (1.0, 1.0, "Ausgezeichnet"),
    (1.1, 1.5, "Sehr Gut"),
    (1.6, 2.5, "Gut"),
    (2.6, 3.5, "Befriedigend"),
    (3.6, 4.0, "Ausreichend"),
    )
   
    for upper, lower, text in translations:
        if upper <= dipl_note <= lower:
            return text
    raise RuntimeError("Couldn't translate note %s with %s", dipl_note, translations)
def diplomnote(a, p, t, th1, th2, th3, sp, ef, dipl):
    theorie = gerundeter_schnitt (th1, th2, th3)
    theorie_msg=r'''
    Th1: %2.1f    \
    Th2: %2.1f    = %2.1f
    Th3: %2.1f    /
    ''' % (th1, th2, theorie, th3)
    print theorie_msg
   
    gris    = gerundeter_schnitt (a, p, t)
    gris_msg=r'''
    A  : %2.1f    \
    P  : %2.1f    = %2.1f
    T  : %2.1f    /
    ''' % (a,p, gris, t)
    print gris_msg
    dipl_note = gerundeter_schnitt (theorie, gris, sp, ef, dipl)
    dipl_noten_text = get_dipl_noten_text(dipl_note)
    rest_msg=r'''
    Nebenfach:    %2.1f
    Schwerpunkt:  %2.1f
    Diplomarbeit:  %2.1f
    ====================
    Gesamt:        %2.1f %s
    ''' % (ef, sp, dipl, dipl_note, dipl_noten_text)
    print rest_msg
       
    return dipl_note
if __name__ == '__main__':
    import sys
    noten = [float(arg) for arg in sys.argv[1:]]
    a, p, t, th1, th2, th3, sp, ef, dipl = noten
    print diplomnote(*noten)
</pre>


== Bachelor ==
== Bachelor ==
Zeile 147: Zeile 81:
  FIXME!
  FIXME!
=== Beispiel ===
=== Beispiel ===
==== PHP ====
  FIXME!
<pre>
<?php
// original quellcode von X3K6A2 aus
// https://www.fb18.de/mybb/showthread.php?tid=9878&pid=99910#pid99910
// erweitert um die moeglichkeit die noten auch fuer andere studiengaenge zu berechnen
 
// scp calc.php ebase.dyndns.info:htdocs/calc.php
 
$str='';
$studiengaenge = array(
    "Informatik_Bachelor" =>
      array(
        array("SE1",6,1),
        array("SE2",6,1),
        array("SE3",6,1),
        array("AD",6,1),
        array("GDB",6,1),
        array("GSS",6,1),
        array("RS",9,1),
        array("FGI1",9,1),
        array("FGI2",9,1),
        array("IKON",6,1),
        array("Praktikum",3,1),
        array("Seminar",1.5,2),
        array("Projekt",4.5,2),
        array("DM",9,1),
        array("ALA",9,1),
        array("Stochastik",9,1),
        array("WahlPflicht1",9,2),
        array("WahlPflicht2",9,2),
        array("WahlPflicht3",9,2),
        array("Wahl1",9,1),
        array("Wahl2",9,1),
        array("BacArbeit",12,4)
        ),
    "Informatik_Bachelor_2010" =>
      array(),
    "Informatik_Bachelor_2011" =>
      array(),
    "CIS_Biochemie_Bachelor" =>
      array(
        array("SE1",6,1),
        array("SE2",6,1),
        array("AC",9,1),
        array("OC",9,1),
        array("PC1",4.5,1),
        array("PC2",4.5,1),
        array("Einf. BC",3,1),
        array("Strukt. BC",3,1),
        array("BC",6,1),
        array("BC Praktikum",6,1),       
        array("Mathe1",9,1),
        array("Mathe2",9,1),
        array("FGI1",9,1),
        array("Mathe3/FGI2",9,1),
        array("STO",9,1),
        array("Numerik",9,1),               
        array("AD",6,1),
        array("GDB",6,1),
        array("ASE",3,1),
        array("CiS-Prog",6,1),
        array("CiS Biochemie",6,1),
        array("Wahlpflicht1",9,1),
        array("Wahlpflicht2",9,1),
        array("Projekt",6,1),
        array("Seminar",3,1),
        array("BacArbeit",12,3)   
      ),
    "CIS_Chemie_Bachelor" =>
      array(
        array("SE1",6,1),
        array("SE2",6,1),
        array("AC",9,1),
        array("OC",9,1),
        array("PC1",4.5,1),
        array("PC2",4.5,1),
        array("PC3",9,1),
        array("Ausgw. Kapitel der Chemie",6,1),       
        array("Mathe1",9,1),
        array("Mathe2",9,1),
        array("FGI1",9,1),
        array("Mathe3/FGI2",9,1),
        array("STO",9,1),
        array("Numerik",9,1),
        array("AD",6,1),
        array("GDB",6,1),
        array("CiS-Prog",6,1),
        array("CiS Chemie",6,1),
        array("Wahlpflicht1",9,1),
        array("Wahlpflicht2",9,1),
        array("Wahlplicht Chemie",6,1),
        array("Projekt",6,1),
        array("Seminar",3,1),
        array("BacArbeit",12,3)   
      ),
    "CIS_Physik_Bachelor" =>
      array(
        array("SE1",6,1),
        array("SE2",6,1),
        array("Physik1",12,1),
        array("Physik2",12,1),
        array("Physikpraktikum",9,1),
        array("Theoretische Physik2",9,1),       
        array("Mathe1",9,1),
        array("Mathe2",9,1),
        array("FGI1",9,1),
        array("Mathe3/FGI2",9,1),
        array("STO",9,1),
        array("Numerik",9,1),
        array("AD",6,1),
        array("GDB",6,1),
        array("CiS Physik",6,1),
        array("CiS-Prog",6,1),
        array("Wahlpflicht1",9,1),
        array("Wahlpflicht2",9,1),
        array("Wahlpflicht Physik",6,1),
        array("Projekt",6,1),
        array("Seminar",3,1),
        array("BacArbeit",12,3)   
      ),
  "MCI_Bachelor" =>
      array(
        array("SE1",6,1),
        array("SE2",3,1),
        array("SE3",6,1),
        array("GDB",6,1),
        array("FGI1",9,1),
        array("IKON",6,1),
        array("DM",9,1),
        array("EP",3,1),
        array("AP1",6,1),
        array("AP2",6,1),
        array("AuO",6,1),
        array("QM1",5,1),
        array("QM2",5,1),
        array("Soz-/BioP",6,1),
        array("Entw-/PaedagP",6,1),
        array("GWV",9,2),
        array("ID",9,2),
        array("MCI-Praktikum",3,1),
        array("Seminar",1.5,2),
        array("Projekt",4.5,2),
        array("Wahlbereich",33,1),
        array("BacArbeit",12,3)
        ),
    "SSE_Bachelor" => array(),
    "Informatik_Master" =>
      array(
        array("FGI3",9,1),
        array("WahlPflicht1",9,1),
        array("WahlPflicht2",9,1),
        array("WahlPflicht3",9,1),
        array("Wahl1",6,1),
        array("Wahl2",6,1),
        array("Wahl3",6,1),
        array("Vertiefung1",6,1),
        array("Vertiefung2",6,1),
        array("Vertiefung3",6,1),
        array("Projekt",12,1),
        array("FreierWahlBereich",6,1),
        array("Masterarbeit",30,1),
      ),
    "Quellcode" => array()
);
$studiengang = key($studiengaenge); //gibt den ersten key zurueck
if(array_key_exists($_REQUEST["Studiengang"], $studiengaenge)){
  $studiengang = $_REQUEST["Studiengang"];
}
 
if($studiengang == "Quellcode")
{
  header("Content-Disposition: attachment; filename=calc.php");
  header("Content-Type: text/php; charset=utf-8");
  $str = file_get_contents(__FILE__);
  echo $str;
  exit;
}
$faecher = $studiengaenge[$studiengang];
 
$str.="<html><body>\n<form target=\".$_SERVER[PHP_SELF].\" method=\"GET\">\n";
$str.=" <table>\n    <tr><td colspan=4>\n";
$str.="      <select name=\"Studiengang\">\n";
foreach($studiengaenge as $studg => $null){
  if($studiengang == $studg){
    $str.="        <option selected>$studg</option>\n";
  }
  else
  {
    $str.="        <option>$studg</option>\n";
  }
}
$str.="      </select>\n    </td><td>\n      <input type=submit name=submit value=calc>\n    </td></tr>\n";
$str.="    <tr><th>Fach</th><th>Note</th><th>LP</th><th>Faktor</th><th>Gewicht</th></tr>\n";
 
 
$total_gewicht=0;
for($i=0; $faecher[$i] ; $i++){
  $total_gewicht += $faecher[$i][1] * $faecher[$i][2];
}
 
if(count($faecher) == 0){
  $str.="    <tr><td colspan=5>\n";
  $str.="      <i>Für diesen Studiengang wurden noch keine Module,<br />\n";
  $str.="      Leistungspunkte und Gewichtungen eingetragen.<br />\n";
  $str.="      Du kannst die Daten raussuchen und im <a href=\"https://www.fb18.de/mybb/showthread.php?tid=9878\">fb18</a> posten.</i>\n";
  $str.="    </td></tr>\n";
}
 
for($i=0; $faecher[$i] ; $i++)
{
        $preset = 0;
        if(array_key_exists($faecher[$i][0], $_REQUEST)){
            $preset = str_replace(",", ".", $_REQUEST[$faecher[$i][0]]);
        }
        $lp = $faecher[$i][1];
        $faktor = $faecher[$i][2];
        $gewicht = ($faktor * $lp);
        $str.="    <tr><td>".$faecher[$i][0]."</td><td><input name='".$faecher[$i][0]."' size='2' value='".$preset."'></td><td align=right>$lp</td><td align=right>$faktor</td><td align=right>$gewicht/$total_gewicht</td></tr>\n";
}
//$str.="    <tr><td colspan=3><input type=submit name=submit value=calc></td></tr>\n";
 
$grenzen = calc_range($faecher, $_REQUEST);
 
$str.="    <tr><td colspan=3>Beste moegliche Note</td><td align=right>".$grenzen['obere']."</td><td rowspan=3><input type=submit name=submit value=calc></td></tr>\n";
$str.="    <tr><td colspan=3>Schlechteste moegliche Note</td><td align=right>".$grenzen['untere']."</td></tr>\n";
$str.="    <tr><td colspan=3>Laufende Note</td><td align=right>".$grenzen['laufend']."</td></tr>\n";
$str.="    <tr><td colspan=5 align=center>[alle angaben - wie immer - ohne gewähr - feher<!--sic--></td></tr>\n";
$str.="    <tr><td colspan=5 align=center>und änderungswünsche kannst du im <a href=\"https://www.fb18.de/mybb/showthread.php?tid=9878\">fb18</a> posten]</td></tr>\n";
$str.="  </table>\n</form>\n</body></html>";
 
echo $str;
 
function calc_range($faecher, $notes)
{
    $gNotenBekannt=0;
    $gGewichtBekannt=0;
    $gesamtGewicht=0;
   
    for($i=0;$faecher[$i];$i++)
    {
        $gesamtGewicht+=($faecher[$i][1]*$faecher[$i][2]);
        $note = str_replace(",", ".", $notes[$faecher[$i][0]]);
        if($note>0)
        {
            $gNotenBekannt+=($note*$faecher[$i][1]*$faecher[$i][2]);
            $gGewichtBekannt+=($faecher[$i][1]*$faecher[$i][2]);
        }
    }   
   
    $grenzen=array(
                                obere=>0,
                                untere=>0,
                                laufend=>0
                                );
    if($gesamtGewicht != 0){
      $grenzen['obere']=round(($gNotenBekannt+($gesamtGewicht-$gGewichtBekannt)*1)/$gesamtGewicht, 2);
      $grenzen['untere']=round(($gNotenBekannt+($gesamtGewicht-$gGewichtBekannt)*4)/$gesamtGewicht, 2);
    }
    if($gGewichtBekannt != 0){
      $grenzen['laufend']=round($gNotenBekannt/$gGewichtBekannt, 2);
    }
    //print_r($grenzen);
    //echo $gNotenBekannt.';'.$gGewichtBekannt.';'.$gesamtGewicht;
    return $grenzen;
}
</pre>
 
=== Implementierung ===
=== Implementierung ===
* Quelle: https://www.fb18.de/mybb/showthread.php?tid=9878
*Quelle: https://www.fb18.de/mybb/showthread.php?tid=9878
* Online: http://ebase.dyndns.info/calc.php
*Online: http://www.ausgeschieden.de/bac/calc.php

Bitte beachte, dass alle Beiträge zu Fachschaft_Informatik von anderen Mitwirkenden bearbeitet, geändert oder gelöscht werden können. Reiche hier keine Texte ein, falls du nicht willst, dass diese ohne Einschränkung geändert werden können.

Du bestätigst hiermit auch, dass du diese Texte selbst geschrieben hast oder diese von einer gemeinfreien Quelle kopiert hast (weitere Einzelheiten unter Fachschaft Informatik:Urheberrechte). ÜBERTRAGE OHNE GENEHMIGUNG KEINE URHEBERRECHTLICH GESCHÜTZTEN INHALTE!

Bitte beantworte die folgende Frage, um diese Seite bearbeiten zu können (<a href="/Fachschaft/wiki/index.php?title=Special:Captcha/help" class="internal">weitere Informationen</a>):

Abbrechen Bearbeitungshilfe (wird in einem neuen Fenster geöffnet)