#!/usr/bin/perl $schooljaar="2012/2013"; $jaarplan = "ovc-ob1.1213.txt"; $lesplan = "havo1-12.txt"; open my $wf, "< $jaarplan" or die "can't open $jaarplan"; my $lesweken = 0, $weken = 0, $hos = 0; while ( <$wf> ) { /(\d+) (\S+)( (.*))?/; #print "nummer $1, factor $2, bijzonderheid '$4'\n"; $lesweken += $2; $weekinfo[$weken]{'nummer'} = $1; $weekinfo[$weken]{'factor'} = $2; $weekinfo[$weken]{'bijzonderheid'} = $4; $weken++; } close $wf; open my $plan, "< $lesplan" or die "can't open $lesplan"; my $lpw = -1, $toetsv = -1, $toets = -1, $toetsb = -1; my $verloren = 0; while ( <$plan> ) { s/\s*\#.*//; if ( /Lessen_per_week: (.*)/ ) { $lpw = $1; } elsif ( /Toets: (.*)/ ) { $toets = $1; } elsif ( /Toets bespreken: (.*)/ ) { $toetsb = $1; } elsif ( /Titel: (.*)/ ) { $titel = $1; } elsif ( /Laatste_les_voor_de_toets: (.*)/ ) { $toetsv = $1; } elsif ( /Ho(\d+): (.*)/ ) { $hinfo[$hos]{'nummer'} = $1; $_ = $2; #print "hoofdstuk nummer $1: $_\n"; if ( /T/ ) { if ( $toets == -1 ) { die "toetslengte undefd"; } $verloren += $toets; #print "verloren $verloren\n"; $hinfo[$hos]{'toets'} = 1; } if ( /L/ ) { if ( $toetsv == -1 ) { die "toetslengtev undefd"; } $verloren += $toetsv; $hinfo[$hos]{'voorbespreking'} = 1; } if ( /B/ ) { if ( $toetsb == -1 ) { die "toetslengteb undefd"; } $verloren += $toetsb; $hinfo[$hos]{'nabespreking'} = 1; } if (/R(\d+)(-(\d+))?/ ) { if ($3 == 0) { $3 = $1; } $hinfo[$hos]{'regulier'}{'start'} = $1; $hinfo[$hos]{'regulier'}{'aantal'} = $3 - $1 + 1; #print $3 - $1 + 1, " sommen\n"; } $hos++; } } if ( $lpw == -1 ) { die "onbekend aantal lessen per week"; } #printf "lessen per week $lpw\n"; #printf "lessen per toets $toets\n"; #printf "'laaste les voor de toets' $toetsv\n"; #printf "toets bespreken $toetsb\n"; $lessen = $lesweken*$lpw; #print "lesweken = $lesweken\n"; #print "bruto lessen = $lessen\n"; #print "verloren lessen = $verloren\n"; #print "lessen per hoofdstuk = ", ($lessen - $verloren)/$hos, "\n"; my $toetsv_doen = 0; my $toets_doen = 0; my $toetsb_doen = 0; my $bezig = 0; my $voorsommen = ($lessen - $verloren)/$hos; my $gedaan = 0; print "Globale jaarplanning $titel $schooljaar\n"; print "week,sommen/toetsen,bijzonderheden\n"; for ($i = 0; $i < $weken; $i++) { print "$weekinfo[$i]{'nummer'},"; $beschikbaar = $weekinfo[$i]{'factor'}*$lpw; if ( $toetsb_doen > 0 && $beschikbaar >= $toetsb ) { $beschikbaar -= $toetsb; #print "E toets ho", $hinfo[$bezig-$toetsb_doen]{'nummer'}, " bespreken "; $toetsb_doen--; } if ( $toetsv_doen > 0 && $beschikbaar >= $toetsv ) { $beschikbaar -= $toetsv; print "DT ho", $hinfo[$bezig-$toetsv_doen]{'nummer'}, " "; $toetsv_doen--; } if ( $toets_doen > 0 && $beschikbaar >= $toets ) { $toetsb_doen++; $beschikbaar -= $toets; print "ET ho", $hinfo[$bezig-$toets_doen]{'nummer'}, " "; $toets_doen--; } #print "over $beschikbaar\n"; if ( $beschikbaar ) { $gedaan += $beschikbaar; if ( $gedaan > $voorsommen ) { print " ho", $hinfo[$bezig]{'nummer'}, ": t/m ", $hinfo[$bezig]{'regulier'}{'aantal'} + $hinfo[$bezig]{'regulier'}{'start' - 1}; $bezig++; $toetsv_doen++; $toets_doen++; $gedaan -= $voorsommen; } if ( $bezig < $hos ) { print " ho", $hinfo[$bezig]{'nummer'}, ": t/m ", int $hinfo[$bezig]{'regulier'}{'aantal'}*$gedaan/$voorsommen + $hinfo[$bezig]{'regulier'}{'start'} - 1, " "; } } print ",$weekinfo[$i]{'bijzonderheid'}\n"; }