<?php //cet exercice fonctionne tel quel en local //hors mis la mise en page empty($_SESSION)? session_start():print""; ini_set("default_charset" , "UTF-8") ; if (isset($_REQUEST['opType'])) { $_SESSION["opType"] = $_REQUEST['opType']; $opType = $_REQUEST['opType']; } else { $opType = "Tous"; $_SESSION['opType'] = $opType; } ?> <!--<link rel='stylesheet' href='../style_sheets/style_exercises.css' type='text/css' />--> <?php $operators = ""; load_array($operators); $actFile="../commons/show_exercises.php"; $exefile="lesson_03_test.php"; $curFile=basename($_SERVER['PHP_SELF']); global $curFile, $actFile, $exefile, $operators; //on fait en sorte que l'exercice marche en local if ($curFile == "lesson_03_test.php") { echo "<form action=$_SERVER[PHP_SELF]?opType=$opType"; } else { echo "<form action= $actFile?exercise=$exefile&opType=$opType"; } echo " method=post>"; //------------------------------------------ switch ($opType) { //-------------------- case "Affectation" : $title = "<h3>Opérateurs d'affectation</h3>"; echo $title; if (!isset($_REQUEST['var_1'])) { ?>Vous pouvez saisir une valeur pas forcement numérique :<br />Format : "Valeur de gauche" "Opérateur""Valeur de droite"<br /> Les valeurs non numériques doivent être entre guillemets <table class=exercises> <tr><td class=exercises>Valeur de droite</td> <td class=exercises> <input type="text" name="var_1"> </td></tr> <tr><td class=exercises>Valeur gauche intiale </td> <td class=exercises> <input type="text" name="var_2"> </td></tr> <tr><td class=exercises colspan=2 align=right> <input type="submit" name="send_values" value="Envoyer"> </td></tr></table> </form> <?php } else { $var_1 = $_REQUEST['var_1'] ; if (!isset($_REQUEST['var_2'])) { $var_2 = 0 ; } echo '<table class=exercises><tr> <th class=params><small>Opér.</th> <th class=comments><small>Nom</th> <th class=inputs><small>Valeur<br />de gauche </th> <th class=inputs><small>Valeur<br />de droite </th> <th class=params><small>Opération</th> <th class=outputs><small>Résultat</th> <th class=outputs><small>Résultat après<br /> nouvelle <br />affectation</small></th></tr>'; foreach($operators as $keyLevel_1 => $dataLevel_1) { //echo $dataLevel_1[0]."<br />"; if ($dataLevel_1[0] == $opType) { $var_1 = $_REQUEST['var_1'] ; $concat_ = $_REQUEST['var_2'] ; echo "<td class=params>$dataLevel_1[1] </td>"; echo "<td class=comments><small> $keyLevel_1 </small></td>"; echo "<td class=inputs>$concat_</td>"; echo "<td class=inputs>$var_1</td>"; $concat = $dataLevel_1[3].$var_1 ; //on execute l'expression avec eval eval("\$concat_ $concat;" ); echo "<td class=params>". $_REQUEST['var_2'].$concat."</td>"; echo "<td class=outputs> $concat_</td>"; eval("\$concat_ $concat;" ); echo "<td class=outputs> $concat_</td>"; echo "<tr>"; } } echo "</table>"; } break; //---------------------------------------- case "Arithmétique" : $title = "<h3>Opérateurs arithmétiques</h3>"; $var_1_message = "Valeur de gauche (numérique)"; $var_2_message = "Valeur de droite (numérique)"; if (!isset($_REQUEST['var_1'])) { form_2($title,$var_1_message,$var_2_message); } else { echo $title; $var_1 = str_replace("," , "." , $_REQUEST['var_1']); if (!isset($_REQUEST['var_2'])) { $var_2 = 0 ; } else { $var_2=str_replace("," , "." , $_REQUEST['var_2']); strtr($var_2,",","."); } $var_1 = clear_not_numeric($var_1); $var_2 = clear_not_numeric($var_2); echo '<table class=exercises><tr> <th class=params>Opérateur</th> <th class=comments>Nom</th> <th class=inputs>Valeur saisie <br />(gauche)</th> <th class=inputs>Valeur saisie <br />(droite)</th> <th class=params>Opération</th> <th class=outputs>Résultat</th></tr>'; foreach($operators as $keyLevel_1 => $dataLevel_1) { if ($dataLevel_1[0] == $opType) { echo "<td class=params>$dataLevel_1[1] </td>"; echo "<td class=comments><small> $keyLevel_1 </small></td>"; echo "<td class=inputs>$var_1</td>"; echo "<td class=inputs>$var_2</td>"; $concat = $var_1.$dataLevel_1[3].$var_2 ; //on execute l'expression avec eval eval("\$concat_ = $concat;" ); echo "<td class=params>$concat</td>"; echo "<td class=outputs>$concat_</td>"; echo "<tr>"; } } echo "</table>"; } break; //-------------------- case "Binaires" : $title = "<h3>Opérateurs binaires</h3>"; $var_1_message = "Valeur de gauche (numérique base 10)"; $var_2_message = "Valeur de droite (numérique base 10)"; if (!isset($_REQUEST['var_1'])) { form_2($title,$var_1_message,$var_2_message); } else { echo $title; $var_1 = $_REQUEST['var_1'] ; if (!isset($_REQUEST['var_2'])) { $var_2 = "" ; } else { $var_2 = $_REQUEST['var_2']; } show_result_1($var_1,$var_2,$operators,$opType); } break; //-------------------- case "Comparaison" : $title = "<h3>Opérateurs de comparaison</h3>"; $var_1_message = "Valeur de gauche (numérique ou non)"; $var_2_message = "Valeur de droite (numérique ou non)"; if (!isset($_REQUEST['var_1'])) { form_2($title,$var_1_message,$var_2_message); } else { echo $title; $var_1 = $_REQUEST['var_1'] ; if (!isset($_REQUEST['var_2'])) { $var_2 = "" ; } else { $var_2 = $_REQUEST['var_2']; } show_result_1($var_1,$var_2,$operators,$opType); } break; //-------------------- case "Décalage" : $title = "<h3>Opérateurs de décalage de bits</h3>"; $var_1_message = "Valeur de gauche (numérique, valeur à décaler)"; $var_2_message = "Valeur de droite (numérique, nombre de décalages)"; if (!isset($_REQUEST['var_1'])) { form_2($title,$var_1_message,$var_2_message); } else { echo $title; $var_1 = $_REQUEST['var_1']; if (!isset($_REQUEST['var_2'])) { $var_2 = "" ; } else { $var_2 = $_REQUEST['var_2']; } show_result_1($var_1,$var_2,$operators,$opType); } break; //-------------------- case "Incrémentation" : $title = "<h3>Opérateurs d'incrémentation/décrémentation </h3>"; echo $title; if (!isset($_REQUEST['var_1'])) { ?> <table class=exercises> <tr><td class=exercises>Valeur à incrémenter: <br /><small>(Numérique ou alphabétique)</small></td> <td class=exercises> <input type="text" name="var_1"></td></tr> <tr><td class=exercises> <input type="submit" name="send_values" value="Envoyer"> </td></tr></table> </form> <?php } else { $var_1 = $_REQUEST['var_1'] ; echo '<table class=exercises><tr> <th class=params>Opérateur</th> <th class=comments>Nom</th> <th class=inputs>Valeur saisie <br />(gauche)</th> <th class=params>Opération</th> <th class=outputs>Résultat</th></tr>'; foreach($operators as $keyLevel_1 => $dataLevel_1) { if ($dataLevel_1[0] == $opType) { $var_1 = $_REQUEST['var_1'] ; echo "<td class=params>$dataLevel_1[1]</td>"; echo "<td class=comments><small> $keyLevel_1 </small></td>"; echo "<td class=inputs>$var_1</td>"; $concat = $dataLevel_1[3].'$var_1' ; //on execute l'expression avec eval eval("\$concat_ = $concat;" ); echo "<td class=params>$concat</td>"; echo "<td class=outputs>$concat_</td>"; echo "<tr>"; } } echo "</table>"; } break; //-------------------- case "Logiques" : $title = "<h3>Opérateurs logiques</h3>"; $var_1_message = "Valeur de gauche (numérique)"; $var_2_message = "Valeur de droite (numérique)"; if (!isset($_REQUEST['var_1'])) { form_2($title,$var_1_message,$var_2_message); } else { echo $title; $var_1 = $_REQUEST['var_1']." "; if (!isset($_REQUEST['var_2'])) { $var_2 = "" ; } else { $var_2 = " ".$_REQUEST['var_2']; } show_result_1($var_1,$var_2,$operators,$opType); } break; //-------------------- case "Tous" : echo "<big><b>Liste des opérateurs en PHP </b></big>"; echo "<table class=exercises><tr> <th class=params>Opérateur</th> <th class=params>Type</th> <th class=comments>Nom</th></tr>"; foreach($operators as $keyLevel_1 => $dataLevel_1) { echo "<TR><td class=params>$dataLevel_1[1]</td>"; echo "<td class=params>$dataLevel_1[0]</td>"; echo "<td class=comments><small> $keyLevel_1 </small></td></tr>"; } echo "</table>"; break ; } //****************************FONCTIONS function show_result_1($var_1,$var_2,$operators,$opType) { echo '<table class=exercises><tr> <th class=params>Opérateur</th> <th class=comments>Nom</th> <th class=inputs>Valeur saisie <br />(gauche)</th> <th class=inputs>Valeur saisie <br />(droite)</th> <th class=params>Opération</th> <th class=outputs>Résultat</th></tr>'; foreach($operators as $keyLevel_1 => $dataLevel_1) { if ($dataLevel_1[0] == $opType) { echo "<td class=params>$dataLevel_1[1]</td>"; echo "<td class=comments><small> $keyLevel_1 </small></td>"; echo "<td class=inputs>$var_1</td>"; echo "<td class=inputs>$var_2</td>"; if ($dataLevel_1[1] != "!") { $concat = "(".$var_1.$dataLevel_1[3].$var_2.")" ; } else { $var_2 = trim($var_2); $concat = "(".$dataLevel_1[3].$var_2.")" ; } //on execute l'expression avec eval eval("\$concat_ = $concat;" ); echo "<td class=params>$concat</td>"; echo "<td class=outputs>$concat_</td>"; echo "<tr>"; } } echo "</table>"; } //---------------------------------- function form_2($title,$var_1_message,$var_2_message) { echo $title; echo "<table class=exercises> <tr><td class=exercises>$var_1_message</td> <td class=exercises> <input type=text name=var_1></td></tr> <tr><td class=exercises>$var_2_message</td> <td class=exercises> <input type=text name=var_2></td></tr> <tr><td class=exercises colspan=2 align=right> <input type=submit name=send_values value=Envoyer> </td></tr></table> </form> "; } //-------------------------------------- function clear_not_numeric($value) { if (!is_numeric($value)) { $value = 0 ; } return $value; } //-------------------------------- function load_array($operators) { global $operators; //tableau des opérateurs $operators = array ("Addition" => array("Arithmétique","+" ,"valeur numérique","+"), "Soustraction" => array("Arithmétique","-" ,"valeur numérique","-"), "Multiplication" => array("Arithmétique","*" ,"valeur numérique","*"), "Division" => array("Arithmétique","/" ,"valeur numérique","/"), "Modulo" => array("Arithmétique","%" ,"valeur numérique","%"), "Incrémentation" => array("Incrémentation","++","valeur numérique","++"), "Décrémentation" => array("Incrémentation","--","valeur numérique","--"), "Egal" => array("Comparaison","==" ,"valeur numérique","=="), "Identique" => array("Comparaison","===" ,"valeur numérique","===" ), "Non Egal" => array("Comparaison","<>" ,"valeur numérique","<ul>" ), "Non Egal" => array("Comparaison","!=" ,"valeur numérique","!=" ), "Non Identique" => array("Comparaison","!==" ,"valeur numérique","!=="), "Plus petit" => array("Comparaison","<" ,"valeur numérique","<"), "Plus grand" => array("Comparaison",">" ,"valeur numérique",">" ), "Plus petit ou égal" => array("Comparaison","<"."=" ,"valeur numérique","<="), "Plus grand ou égal" => array("Comparaison",">=" ,"valeur numérique",">="), "Affectation simple" => array("Affectation","=" ,"valeur numérique","="), "Addition puis affectation" => array("Affectation","+=" ,"valeur numérique","+="), "Soustraction puis affectation" => array("Affectation","-=" ,"valeur numérique","-="), "Multiplication puis affectation" => array("Affectation","*=" ,"valeur numérique","*="), "Division puis affectation" => array("Affectation","/=" ,"valeur numérique","/="), "Modulo puis affectation" => array("Affectation","%=" ,"valeur numérique","%="), "OU puis affectation" => array("Affectation","|=" ,"valeur numérique","|="), "ET puis affectation" => array("Affectation","&=" ,"valeur numérique","&="), "ET" => array("Binaires","&" ,"valeur numérique","&"), "OU" => array("Binaires","|" ,"valeur numérique","|"), "OU exclusif" => array("Binaires","^" ,"valeur numérique","^"), "NON" => array("Binaires","~" ,"valeur numérique","-"), "Décalage à droite" => array("Décalage",">>" ,"valeur binaire",">>"), "Décalage à gauche" => array("Décalage","<<" ,"valeur binaire","<<"), "ET (après le =)" => array("Logiques","AND" ,"valeur binaire","AND"), "OU (après le =)" => array("Logiques","OR" ,"valeur binaire","OR"), "XOR" => array("Logiques","XOR" ,"valeur binaire","XOR"), "NOT" => array("Logiques","!" ,"valeur binaire","!"), "ET (avant le =)" => array("Logiques","&&" ,"valeur binaire","&&"), "OU (avant le =)" => array("Logiques","||" ,"valeur binaire","||"), "Concaténation" => array("Concaténation","." ,"texte","."), "Trinaire" => array("Trinaire","?" ,"expression","?"), "Clé de tableau" => array("Divers","="."<" ,"valeur numérique","=>"), "Appel de méthode" => array("Divers","->" ,"valeur numérique","->") ); } ?> <ul> Tester les opérateurs : <font size=-1> <li><a class=exercices href= <?php show_link("Affectation")?> d'affectation</a></li> <li><a class=exercices href= <?php show_link("Arithmétique")?> arithmetiques</a></li> <li><a class=exercices href= <?php show_link("Binaires")?> binaires</a></li> <li><a class=exercices href= <?php show_link("Comparaison")?> de comparaison </a></li> <li><a class=exercices href= <?php show_link("Décalage")?> de décalage de bit</a></li> <li><a class=exercices href= <?php show_link("Incrémentation")?> d'incrémentation/décrémentation</a></li> <li><a class=exercices href= <?php show_link("Logiques")?> logiques</a></li></ul> <a class=exercices href= <?php show_link("Tous")?> Liste de tous les opérateurs</a> <?php //---------------------------------- function show_link($opeName) { global $curFile, $actFile, $exefile; if ($curFile == "lesson_03_test.php")//loca: { echo "lesson_03_test.php?opType=$opeName>"; } else { echo "$actFile?exercise=$exefile&opType=$opeName>"; } } ?> </font> </body> </html>
|
|