Valid XHTML    Valid CSS2    

Listing du fichier pilev2.php

 

00001     <?php
00002     
00003     error_reporting
(E_ALL | E_NOTICE | E_STRICT ) ;
00004     
00005     
session_start() ;
00006     
00007     include
"std.php" ;
00008     
00009     
debutPage
("Exemple de pile","strict") ;
00010     
debutSection() ;
00011     
00012     if (!isset(
$_SESSION
["laPile"])) {
00013     
$_SESSION
["laPile"] = creerPile() ;
00014     } ;
# fin si
00015     
00016     # -------------------------------------------------------------------------------------
00017     
00018     
h1
("Implémentation d'une \"pile\" via un tableau") ;
00019     
00020     
blockquote() ;
00021     
00022     
form
("pilev2.php") ;
00023     
div
("bgcolor_slate_encadre") ;
00024     
blockquote() ;
00025     
pvide() ;
00026     
p() ;
00027     
input_submit
("Afficher la pile","afficher") ;
00028     
finp() ;
00029     
00030     
p() ;
00031     
input_submit
("Dépiler","depiler") ;
00032     
finp() ;
00033     
00034     
p() ;
00035     
input_submit
("Empiler la valeur ","empiler") ;
00036     
input_text
("valeur","") ;
00037      echo
" (de préférence numérique) " ;
00038     
input_submit
("Exécution !","empiler2","vert_pastel") ;
00039     
finp() ;
00040     
00041     
p() ;
00042     
input_submit
("Réinitialiser la pile","reinitialiser") ;
00043     
finp() ;
00044     
00045     
p() ;
00046      if (isset(
$_GET
["dbg"])) {
00047     
input_checkbox
("dbg"," Activer le mode debug ","","chk") ;
00048      } else {
00049     
input_checkbox
("dbg"," Activer le mode debug ") ;
00050      } ;
# fin si
00051     
finp() ;
00052     
pvide() ;
00053     
finblockquote() ;
00054     
findiv() ;
00055     
finform() ;
00056     
00057     
form
("pilev2.php") ;
00058     
p() ;
00059     
input_submit
("Réinitialiser le formulaire") ;
00060     
finp() ;
00061     
finform() ;
00062     
00063     
# -------------------------------------------------------------------------------------
00064     
00065     
if (isset(
$_GET["reinitialiser"])) {
00066     
h3
("La pile a été réinitialisée.") ;
00067     
$_SESSION
["laPile"] = creerPile() ;
00068     } ;
# fin si
00069     
00070     
if (isset(
$_GET["afficher"])) {
00071      if (
pileVide
($_SESSION["laPile"])) {
00072     
h3
("La pile est vide, il n'y a rien à afficher.") ;
00073      } else {
00074     
h3
("Vous avez demandé d'afficher la pile, la voici&nbsp;: ") ;
00075     
montrerPile
($_SESSION["laPile"]) ;
00076      } ;
# fin si
00077     
} ; # fin si
00078     
00079     
if (isset(
$_GET["depiler"])) {
00080      list(
$enleve
,$_SESSION["laPile"]) = depiler($_SESSION["laPile"]) ;
00081      if (
$enleve
=="") {
00082     
h3
("La pile est vide, il n'y a rien à dépiler.") ;
00083      } else {
00084     
h3
("On a oté $enleve de la pile.") ;
00085      } ;
# finsi
00086     
} ; # fin si
00087     
00088     
if (isset(
$_GET["empiler"]) or (isset($_GET["empiler2"]))) {
00089      if ((!isset(
$_GET
["valeur"])) or (isset($_GET["valeur"]) and ($_GET["valeur"]=="")) ){
00090     
h3
("Vous n'avez fourni aucune valeur à empiler.") ;
00091      } else {
00092     
$_SESSION
["laPile"] = empiler($_GET["valeur"],$_SESSION["laPile"]) ;
00093     
h3
("On a empilé la valeur ".$_GET["valeur"]) ;
00094      } ;
# fin si
00095     
} ; # fin si
00096     
00097     
if (isset(
$_GET["dbg"])) {
00098     
h2
("Mode debug actif","grouge") ;
00099     
blockquote() ;
00100     
h3
("Voici le contenu du tableau qui implémente la pile :") ;
00101     
pre
("plusgrand cadre") ;
00102     
print_r
($_SESSION["laPile"]) ;
00103     
finpre() ;
00104     
finblockquote() ;
00105     } ;
# fin si
00106     
00107     
finblockquote() ;
00108     
00109     
# -------------------------------------------------------------------------------------
00110     
00111     
finSection() ;
00112     
finPage() ;
00113     
00114     
# ----------------------------------
00115     
00116     
function
creerPile() {
00117     
00118      return( array() ) ;
00119     
00120     }
# fin de fonction creerPile
00121     
00122     # ----------------------------------
00123     
00124     
function
pileVide($p) {
00125     
00126      return(
count
($p)==0 ) ;
00127     
00128     }
# fin de fonction pileVide
00129     
00130     # ----------------------------------
00131     
00132     
function
empiler($valeur,$pile) {
00133     
00134     
$pile
[ count($pile) ] = $valeur ;
00135     
00136      return(
$pile ) ;
00137     
00138     }
# fin de fonction empiler
00139     
00140     # ----------------------------------
00141     
00142     
function
depiler($pile) {
00143     
00144     
$idd
= count($pile) - 1 ; # idd : indice du dernier
00145     
00146     
if (
$idd>=0) {
00147     
$dep
= $pile[ $idd ] ;
00148      unset(
$pile
[ $idd ] ) ;
00149      } else {
00150     
$dep
= "" ;
00151      }
# finsi
00152     
00153     
return( array(
$dep,$pile) ) ;
00154     
00155     }
# fin de fonction depiler
00156     
00157     # ----------------------------------
00158     
00159     
function
montrerPile($pile) {
00160     
00161     
pre
("plusgrand") ;
00162     
$nbe
= count($pile) ;
00163      if (
pileVide
($pile)) {
00164      echo
"la pile est vide.\n" ;
00165      } else {
00166      echo
"Contenu de la pile :\n" ;
00167      for (
$ide
=$nbe-1;$ide>=0;$ide--) {
00168      echo
" valeur numéro "
.sprintf("%2d",$ide)." : ".sprintf("%4d",$pile[$ide]) ;
00169      if (
$ide
==$nbe-1) { echo " (haut de la pile)" ; } ;
00170      if (
$ide
==0) { echo " (bas de la pile)" ; } ;
00171      echo
"\n" ;
00172      } ;
# fin pour ide
00173     
} ; # finsi
00174     
finpre() ;
00175     
00176     }
# fin de fonction montrerPile
00177     
00178     # ----------------------------------
00179     
00180     
?>

Pour ne pas voir les numéros de ligne, ajoutez &nl=non à la suite du nom du fichier.

 

 

retour gH    Retour à la page principale de   (gH)