_coder_: Skriptbewertung

hi there,

also ich habe mal einfach so folgendes Skript geschrieben weil ich mich im Kopfrechnen verbessern wollte.
Was haltet ihr von dem Skript?

#!/bin/bash  
<?php  
  
$max = 100;  
$min = -100;  
if($argc >= 2) {  
 if(is_numeric($argv[1])) {  
  $max = $argv[1];  
 } else {  
  echo 'argument (1) not numeric'."\n";  
  exit(0);  
 }  
 if($argc >= 3) {  
  if(is_numeric($argv[2])) {  
   $min = $argv[2];  
  }  
 } else {  
  echo 'argument (2) not numeric'."\n";  
  exit(0);  
 }  
 if($min > $max) {  
  $tmp = $max;  
  $max = $min;  
  $min = $tmp;  
  unset($tmp);  
 }  
}  
  
// we do no longer need this $vars  
unset($argv);  
unset($argc);  
  
// we employ the user for a loong time :)  
for(;;) {  
  
 // we use a area of numbers between $min (std.=-100) and $max (std.=100)  
 $first = rand($min, $max);  
 $second = rand($min, $max);  
 $op = rand(0,3);  
 $result = NULL;  
 $stdin = NULL;  
  
 switch($op) {  
  case 0:  
   $op = 'PLUS';  
   $result = $first + $second;  
   break;  
  case 1:  
   $op = 'MINUS';  
   $result = $first - $second;  
   break;  
  case 2:  
   $op = 'TIMES';  
   $result = $first * $second;  
   break;  
  case 3:  
   $op = 'OVER';  
   // division through 0 not defined  
   if($second == 0) {  
    // get an other number  
    do {  
     $second = rand($min, $max);  
    } while($second == 0);  
   }  
   $result = $first / $second;  
   // we only want to calculate max. 2 numbers after [.,]  
   if(ereg('^(-){0,1}[0-9]{1,}\.[0-9]{1,}$', $result)) {  
    while(ereg('^(-){0,1}[0-9]{1,}\.[0-9]{2,}$', $result)) {  
     $result = (++$first) / $second;  
    }  
   }  
   break;  
  default:  
   // will never happen  
   echo "\nERROR\n";  
   exit(0);  
   break;  
 }  
  
 $bracket = array(false,false);  
 if($first < 0) {  
  $bracket[0] = true;  
 }  
 if($second < 0) {  
  $bracket[1] = true;  
 }  
  
 echo ($bracket[0] ? shell_exec('printf "\033[01;33m(\033[0m\033[31m"') : shell_exec('printf "\033[34m"')),  
      str_replace('.', ',', $first),  
      ($bracket[0] ? shell_exec('printf "\033[0m\033[01;33m)\033[0m"') : shell_exec('printf "\033[0m"')),  
      shell_exec('printf " \033[033m'.$op.'\033[0m "'),  
      ($bracket[1] ? shell_exec('printf "\033[01;33m(\033[0m\033[31m"') : shell_exec('printf "\033[34m"')),  
      str_replace('.', ',', $second),  
      ($bracket[1] ? shell_exec('printf "\033[0m\033[01;33m)\033[0m"') : shell_exec('printf "\033[0m"')),  
      ' = ';  
  
 unset($bracket);  
  
 $stdin = trim(fgets(STDIN));  
 $round = round($stdin);  
  
 // if $op == 0|1|2 $top == $bottom == $round  
 $top = $stdin + ($round > $stdin ? $round - $stdin : $stdin - $round);  
 $bottom = $stdin - ($round > $stdin ? $round - $stdin : $stdin - $round);  
  
 $round = $stdin = NULL;  
  
 if($result >= $top && $result <= $bottom) {  
  echo shell_exec('printf "\033[032m[ OK ]\033[0m "')."\n";  
 } else {  
  echo shell_exec('printf "\033[031m[ FALSCH ]\033[0m "').' correct result = '.$result."\n";  
 }  
}  
  
  
?>  

  1. Lieber _coder_,

    Du willst eine Bewertung? Na, dann schau Dir mal folgende Fehler an:

    // we do no longer need this $vars

    Bei Plural verwendet man nicht "this", sondern "these". Warum wollen Schüler das nie kapieren??

    // we use a area of numbers between $min (std.=-100) and $max (std.=100)

    Wenn ein Folgewort mit einem Vokal am Anfang ausgesprochen wird, dann erhält der unbestimmte Artikel ein n angehängt: "an area".

    // division through 0 not defined

    Es heißt "division BY"!

    Da sich Deine sprachlichen Fehler auf dem Niveau eines gymnasialen 8.-Klässlers bewegen, gebe ich Dir die $Note = $deineKlasse - 6; <- Zufrieden?

    Liebe Grüße aus Ellwangen,

    Felix Riesterer.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
    1. Da sich Deine sprachlichen Fehler auf dem Niveau eines gymnasialen 8.-Klässlers bewegen, gebe ich Dir die $Note = $deineKlasse - 6; <- Zufrieden?

        
      $deineKlasse = 10;  
        
      $Note = $deineKlasse - 6;  
        
      echo $Note; // = 4  
      
      

      OK, damit könnte ich leben ...

      1. Also, ich dachte, es ginge hier mehr um den Script, als um diverse sprachliche Schwierigkeiten und weiß nicht so genau, was ich da jetzt bewerten soll.
        Die Syntax? Die Semantik? Die Einrückungen?

        1. Hello,

          Also, ich dachte, es ginge hier mehr um den Script, als um diverse sprachliche Schwierigkeiten und weiß nicht so genau, was ich da jetzt bewerten soll.
          Die Syntax? Die Semantik? Die Einrückungen?

          Die Lesbarkeit und die Dokumentation sind schlimmer als schlimmstes Mittelalter...

          Da hat man wenigstens noch Kaligraphie beherrscht.

          Harzliche Grüße vom Berg
          http://www.annerschbarrich.de

          Tom

          --
          Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
          Nur selber lernen macht schlau

      2. Lieber _coder_,

        $deineKlasse = 10;

        wie sich doch die Bilder gleichen... *seufz*

        Liebe Grüße aus Ellwangen,

        Felix Riesterer.

        --
        ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)