Programeer opdrachtenOpdracht : opdr2_redhead.txt

Terug naar de inzendingen
Opdracht 2,Erik Vernooi
3-Feb-2005
 Commentaar: Boven verwachting heb ik het allemaal nog vrij snel werkend gekregen. Volgends mij heb ik het wel enorm omslachtig gemaakt, maar het voldoet aan de opdracht..
 
 /edit: heb gezien dat m'n header niet echt aan de eisen voldoet..mja..pech
 1 
*****opdracht2-2.pl*****
  
 2#!/usr/bin/perl
 3
 4our @kamer1_actie = ("Druk op schemerlamp bij bed", "Druk op centrale lamp bij bed", "Druk op schakelaar bij deur");
 5our @balie_actie ="Druk op schakelaar kamer 1";
 6our $schemerlamp = 0;
 7our $centralelamp = 0;
 8
 9
 10sub printmenu {
 11print "\n";
 12print "\n";
 13print "Systeemmenu - q om af te sluiten\n";
 14print "******************************************\n";
 15print "* Kamer                                  *\n";
 16print "* 1: @kamer1_actie[0]         *\n";
 17print "* 2: @kamer1_actie[1]       *\n";
 18print "* 3: @kamer1_actie[2]         *\n";
 19print "******************************************\n";
 20print "* Balie                                  *\n";
 21print "* 4: @balie_actie[0]          *\n";
 22print "******************************************\n";
 23print "*Status:                                 *\n";
 24print "*Schemerlamp:     $schemerlamp                      *\n";
 25print "*Centrale lamp:   $centralelamp                      *\n";
 26print "******************************************\n";
 27print "\n";
 28$invoer = ;
 29
 30print "\n";
 31print "\n";
 32
 33if ($invoer==1) {
 34 @kamer1[0]=1;
 35} elsif ($invoer==2) {
 36 @kamer1[1]=1;
 37} elsif ($invoer==3) {
 38 @kamer1[2]=1;
 39} elsif ($invoer==4) {
 40 @balie[0]=1;
 41} else { return; 
 42 &printmenu;}
 43&logica;
 44}
 45# einde sub printmenu
 46
 47
 48# sub logica waarin enen en nullen verwerk worden
 49sub logica {
 50if (@kamer1[0]==0 and @kamer1[1]==0 and @kamer1[2]==0 and @balie[0]==0) {
 51 $vark1=0;
 52 @kamer1=0;
 53} elsif (@kamer1[0]==1 and @kamer1[1]==0 and @kamer1[2]==0 and @balie[0]==0) {
 54 $vark1=1;
 55 @kamer1[0]=0;
 56} elsif (@kamer1[0]==0 and @kamer1[1]==1 and @kamer1[2]==0 and @balie[0]==0) {
 57 $vark1=2;
 58 @kamer1[1]=0;
 59} elsif (@kamer1[0]==1 and @kamer1[1]==1 and @kamer1[2]==0 and @balie[0]==0) {
 60 $vark1=3;
 61 @kamer1[0]=0;
 62 @kamer1[1]=0;
 63} elsif (@kamer1[0]==0 and @kamer1[1]==0 and @kamer1[2]==1 and @balie[0]==0) {
 64 $vark1=4;
 65 @kamer1[2]=0;
 66} elsif (@kamer1[0]==0 and @kamer1[1]==0 and @kamer1[2]==0 and @balie[0]==1) {
 67 $vark1=5;
 68 @kamer1=0;
 69 @balie[0]=0;
 70} else { print "The Eye sees you, error in sub logica";
 71&outputvar;
 72}
 73#einde sub logica
 74
 75
 76#sub outputvar
 77sub outputvar {
 78if ($vark1==1 and $schemerlamp==0) {$schemerlamp=1} elsif ($vark1==1) {$schemerlamp=0}
 79elsif ($vark1==2 and $centralelamp==0) {$centralelamp=1} elsif ($vark1==2) {$centralelamp=0}
 80elsif ($vark1==3 and $centralelamp==0) {$centralelamp=1} elsif ($vark1==3) {$centralelamp=1}
 81elsif ($vark1==3 and $schemerlamp==0) {$schemerlamp=1} elsif ($vark1==3) {$schemerlamp=0}
 82elsif ($vark1==4 and $schemerlamp==0 and $centralelamp==0) {$centralelamp=1;$schemerlamp==1}
 83elsif ($vark1==4 and $centralelamp==1) {$centralelamp=0;$schemerlamp=0}
 84elsif ($vark1==4 and $schemerlamp==1 and $centralelamp==0) {$centralelamp=1}
 85elsif ($vark1==4 and $schemerlamp==1 and $centralelamp==1) {$centralelamp=1;$schemerlamp=1}
 86elsif ($vark1==5) {$schemerlamp=0; $centralelamp=0}
 87else {print "The Eye sees you, error in sub outputvar, part 1\n"}
 88
 89if ($schemerlamp==0 and $centralelamp==0) {$vark1lamp=0}
 90elsif ($schemerlamp==0 and $centralelamp==1) {$vark1lamp=1}
 91elsif ($schemerlamp==1 and $centralelamp==0) {$vark1lamp=2}
 92elsif ($schemerlamp==1 and $centralelamp==1) {$vark1lamp=3}
 93else {print "The Eye sees you, error in sub outputvar, part 2\n"}
 94
 95&printmenu;
 96}
 97#einde suboutputvar
 98
 99&printmenu;
 
 
Mijn commentaar
 
 Erik, gezien het feit dat het je eerste programma is,
 kan ik zeggen dat je aardig je best hebt gedaan.
 Waar ik wat minder tevreden over ben is het ontbreken van documentatie,
 en de ... tja wat rommelige manier waarop je het programma hebt opgezet.
 Aleen al door je code over wat meer regels te verdelen (kijn eens naar regels 49-68) had je de leesbaarheid fors kunnen vergroten.
 Wat perl technische dingetjes,
 variabele declaratie met [B]my[/B] of [B]our[/B] is eigenlijk aleen nodig als je de opdracht [B]use strict;[/B] gebruikt.
 bij het aanroepen van de subroutines hoef je (in deze situatie) geen [B]&[/B] te gebruiken.
 Tenslote zoals je zelf al gezien had,
 voldoe je niet geheel aan de opdracht.
 Volgende keer effe de richtlijnen nalezen !