sbsouba
Messages postés10Date d'inscriptionmardi 16 octobre 2012StatutMembreDernière intervention16 octobre 2012
-
1 avril 2008 à 14:27
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 2012
-
1 avril 2008 à 18:29
bonjour a tous je savais qule la fonction goto n'exicte pas dans php mon question s'il ya une autre fonction qui rassemble .merci d'avance .rep moi svp slut
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 1 avril 2008 à 15:15
salut
goto arrivera probablement en php6.
c'est pas une instruction utile habituellement... dijkstra (auteur d'un algo de recherche de plus court chemin), a un jours ecrit un livre qui expliquait pourquoi on ne doit pas utiliser les gotos
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 1 avril 2008 à 18:29
on aurait de mulitples raisons d'avoir besoin d'un goto :)
je code un script, php-recode qui doit transformer une fonction php codee en tail-rec, en fonction non recursive.
<?php
function sub_f ($a, $b){
if ($a==0) return $b;
else{return sub_f($a-1, $a+$b);}
}
function sumOfNaturals($n){
return sub_f($n, 0);
}
echo sumOfNaturals(50000);
?>
si tu mets ca sur un serveur web, apache va te demander de telecharger la page...
en C, compile avec -O2, en ocaml, en Cpp, ca ne plantera pas.... en php, ca segfault...
alors que c'est un exemple qu'on peut ecrire de plein de facons :
<?php
function sub_f ($a, $b){
start:
if ($a==0) return $b;
else{
$arg0=$a-1;
$arg1=$a+$b;
$a=$arg0; $b=$arg1;
goto start;
}
}
function sumOfNaturals($n){
return sub_f($n, 0);
}
la solution avec un while, for ou autre est aussi faisable dans cet exemple, mais pas generalisable (domage, ca ferait un code super joli ;( )
for ($i=0, $j=0;$i<10;$i++, $j+=3){
echo "$i test $j
";
echo "$i";
}
echo sumOfNaturals(50000);
?>
Avant de faire ca, faut pouvoir detecter les fonctions tail-rec, donc parser du php :) c'est pas simple... mais jme suis appercu qu'on pouvait pas en php a cause du manque de goto, quand j'etais presque pres du but.... Cependant, si t'as une solution elegante pour ce genre de problemes, je suis pour...
/**
* @author coucou747 <coucou747@hotmail.com>
* @see irc://cominweb.uni-irc.net/#programmation
*/