Previous Up Next
Université Lille 3-Charles de GaulleUFR de Mathématiques Sciences Économiques et Sociales

Chapitre 22  Premiers exercices d'algorithmique, corrigés

  1. Nombres impairs :
    http://www.grappa.univ-lille3.fr/polys/reseaux-DG/exemples/impair.php
    <HTML><BODY>
    <?php
    for ($i=1; $i<15000; $i=$i+2) {
      echo "$i ";
    }
    ?>
    </BODY></HTML>
    
  2. Punition :
    http://www.grappa.univ-lille3.fr/polys/reseaux-DG/exemples/punition.php
    <HTML><BODY>
    <?php
    for ($i=1;$i<=500;$i++) {
      echo "$i. Je dois faire des sauvegardes régulières...<BR>\n";
    }
    ?>
    </BODY></HTML>
    
  3. 30! :
    http://www.grappa.univ-lille3.fr/polys/reseaux-DG/exemples/factorielle.php
    <HTML><BODY>
    <?php
    $f=1;
    for ($i=2;$i<=30;$i++){
      $f=$f*$i;
    }
    echo "30! = $f\n";
    ?>
    </BODY></HTML>
    
  4. Multiplication par 13 :
    http://www.grappa.univ-lille3.fr/polys/reseaux-DG/exemples/multiplication.php
    <HTML><BODY>
    <?php
    for ($i=0;$i<14;$i++) {
      $r=$i*13;
      echo "$i*13=$r<BR>\n";
    }
    ?>
    </BODY></HTML>
    
    Mais aussi
    http://www.grappa.univ-lille3.fr/polys/reseaux-DG/exemples/multiplicationbis.php
    <HTML><BODY>
    <TABLE>
    <?php
    for ($i=0;$i<14;$i++) {
      $r=$i*13;
      echo "<TR><TD ALIGN=right>$i</TD><TD>*</TD><TD>13</TD><TD>=</TD>";
      echo "<TD ALIGN=right>$r</TD></TR>\n";
    }
    ?>
    </TABLE>
    </BODY></HTML>
    
  5. Table de multiplication totale :
    http://www.grappa.univ-lille3.fr/polys/reseaux-DG/exemples/multiplicationtotale.php
    <HTML><BODY>
    <TABLE BORDER>
    <?php
    // 1ère ligne
    echo "<TR><TD></TD>";
    for ($c=0;$c<13;$c++) {
      echo "<TH>$c</TH>";
    }
    echo "</TR>\n";
    // toutes les lignes
    for ($l=0;$l<13;$l++) {
      // 1 ligne
      echo "<TR><TH>$l</TH>";
      for ($c=0;$c<13;$c++) {
        $r=$c*$l;
        echo "<TD ALIGN=right>$r</TD>";
      }  
      echo "</TR>\n";
    }
    ?>
    </TABLE>
    </BODY></HTML>
    
  6. Coefficients du binôme :
    http://www.grappa.univ-lille3.fr/polys/reseaux-DG/exemples/binome.php
    <HTML><BODY>
    <?php
    function fact($n) {
      $f=1;
      for ($i=1;$i<=$n;$i++) {
        $f*=$i;
      }
      return $f;
    }
    function cnp($n,$p) {
      return fact($n)/(fact($p)*fact($n-$p));
    }
    function binome ($n) {
      echo "<TR>";
      for ($i=0;$i<=$n;$i++) {
        echo "<TD ALIGN=\"right\">".cnp($n,$i)."</TD>";
      }
      echo "</TR>\n";
    }
    echo "<TABLE>\n";
    for ($i=0;$i<=20;$i++) {
      binome ($i);
    }
    echo "</TABLE>\n";
    ?>
    </BODY></HTML>
    
  7. Fibonnacci :
    http://www.grappa.univ-lille3.fr/polys/reseaux-DG/exemples/fibonnacci.php
    <HTML><BODY>
    <?php
    function fibonnacci($n) {
      if ($n<2)
        return $n;
      $fmoins1=1;
      $fmoins2=0;
      for ($i=2;$i<=$n;$i++) {
        $f=$fmoins1+$fmoins2;
        $fmoins2=$fmoins1;
        $fmoins1=$f;
      }
      return $f;
    }
    for ($i=0;$i<50;$i++) {
         echo "$i : ".fibonnacci($i)."<BR>\n";
    }
    ?>
    </BODY></HTML>
    
    On peut aussi une version récursive, plus belle, sans doute plus facile à programmer, mais beaucoup moins efficace (pourquoi ?) :
    http://www.grappa.univ-lille3.fr/polys/reseaux-DG/exemples/fibonnacci-rec.php
    <HTML><BODY>
    <?php
    function fibonnacci($n) {
      if ($n<2)
        return $n;
      return (fibonnacci($n-1)+fibonnacci($n-2));
    }
    for ($i=0;$i<20;$i++) {
      echo "$i : ".fibonnacci($i)."<BR>\n";
    }
    ?>
    </BODY></HTML>
    
  8. Fibonnacci, le retour :
    http://www.grappa.univ-lille3.fr/polys/reseaux-DG/exemples/fibonnacci-retour.php
    <HTML><BODY>
    <?php
    function fibonnacci($n) {
    
              ... comme l'exercice précédent ...
    }
    $or=(sqrt(5)-1)/2;
    echo "<TABLE BORDER><TR><TH>Ordre</TH><TH>Rapport</TH>";
    echo "<TH>Différence</TH></TR>\n";
    for ($i=0;$i<50;$i++) {
      $r=fibonnacci($i)/fibonnacci($i+1);
      echo "<TR><TD>$i</TD><TD>$r</TD><TD>".($r-$or)."</TD></TR>\n";
    }
    ?>
    </BODY></HTML>
    
  9. Afficher un cadre 10x10.
    1. avec <PRE>
      http://www.grappa.univ-lille3.fr/polys/reseaux-DG/exemples/cadre-pre.php
      <HTML><BODY><PRE><TT>
      <?php
      $k="*";
      $MAX=10;
      for ($i=1;$i<=$MAX;$i++) {
        echo $k;
      }
      echo "\n";
      for ($i=2;$i<$MAX;$i++) {
        echo $k;
        for ($j=2;$j<$MAX;$j++) {
          echo " ";
        }
        echo $k."\n";
      }
      for ($i=1;$i<=$MAX;$i++) {
        echo $k;
      }
      echo "\n";
      ?>
      </TT></PRE></BODY></HTML>
      
    2. avec un tableau:
      http://www.grappa.univ-lille3.fr/polys/reseaux-DG/exemples/cadre-table.php
      <HTML><BODY>
      <BLOCKQUOTE><TABLE BORDER><TR>
      <?php
      $k="*";
      $MAX=10;
      for ($i=1;$i<=$MAX;$i++) {
        echo "\t<TD>$k</TD>\n";
      }
      echo "</TR>\n";
      for ($i=2;$i<$MAX;$i++) {
        echo "<TR>\n\t<TD>$k</TD>\n";
        for ($j=2;$j<$MAX;$j++) {
          echo "\t<TD></TD>\n";
        }
        echo "\t<TD>$k</TD>\n</TR>\n";
      }
      echo "<TR>\n";
      for ($i=1;$i<=$MAX;$i++) {
        echo "\t<TD>$k</TD>\n";
      }
      ?>
      </TR>
      </TABLE></BLOCKQUOTE>
      </BODY></HTML>
      
  10. Tableau d'additions à compléter :
    1. avec le total fixe :
      http://www.grappa.univ-lille3.fr/polys/reseaux-DG/exemples/tableauadditionsfixe.php
      <BODY><HTML>
      <H2>Additions  à compléter, total fixe</H2>
      <TABLE ALIGN="center">
      <?php
      $nombre=10; // nombre de lignes
      $total=100; // total à atteindre
      for ($i=0;$i<$nombre;$i++) {
        $connu=rand(1,$total); // le nombre affiché
        echo "\t<TR><TH>n°".($i+1)." : </TD>";
        echo "<TD ALIGN=\"right\">$connu</TD>";
        echo "<TD>+</TD>";
        echo "<TD ALIGN=\"center\"> _________ = </TD>";
        echo "<TD ALIGN=\"right\">$total</TD></TR>\n";
      }
      ?>
      </TABLE>
      </BODY></HTML>
      
    2. avec le total variable :
      http://www.grappa.univ-lille3.fr/polys/reseaux-DG/exemples/tableauadditionsvariable.php
      <BODY><HTML>
      <H2>Additions  à compléter, total variable</H2>
      <TABLE ALIGN="center">
      <?php
      $nombre=10; // nombre de lignes
      $min=80;    // borne inférieure des totaux possibles
      $max=120;   // borne supérieure des totaux possibles
      for ($i=0;$i<$nombre;$i++) {
        $total=rand($min,$max);
        $connu=rand(1,$total);
        echo "\t<TR><TH>n°".($i+1)." : </TD>";
        echo "<TD ALIGN=\"right\">$connu</TD>";
        echo "<TD>+</TD>";
        echo "<TD ALIGN=\"center\"> _________ = </TD>";
        echo "<TD ALIGN=\"right\">$total</TD></TR>\n";
      }
      ?>
      </TABLE>
      </BODY></HTML>
      
D.Gonzalez (gonzalez@univ-lille3.fr) en date du th , 

Previous Up Next