Voir le sujet précédent :: Voir le sujet suivant |
Auteur |
Message |
ocelote
Inscrit le: 10 Sep 2006 Messages: 11
|
Posté le: 15 Sep 2006 21:15 Sujet du message: re PRoGRamme |
|
|
bjr ; voila j'ai posté la semaine derniere mais mon topic a été effacé et je n'ai pas pu corrigé mes fautes.
mon probleme est que le programme ne s'effectue Code: | jeu_tout_pourri:=proc()
> local i,a,b;
> i:=0;
> while(i<11)
> do a:=rand(1,2);
> b:=rand(1,2);
> if a=b then score:=score+1;print(gagné);
> else score:=score;print(perdu);
> fi;
> i:=i+1;
> od;
> "votre score est "||score;
> end proc;
|
Merci |
|
Revenir en haut de page |
|
 |
ALS
Inscrit le: 11 Sep 2006 Messages: 647
|
Posté le: 16 Sep 2006 8:28 Sujet du message: |
|
|
Bonjour, effectivement je me souviens de cette question, hélàs le forum a été visité par un hacker malveillant, ce qui fait que votre message est passé à la trappe. Mille excuses.
Voici donc la correction que je vous propose:
Code: |
> jeu_tout_pourri:=proc(nb)
> local score,h,i,a,b;
> i:=0; score:=0; h:=rand(1..2); randomize();
> while(i<nb)
> do
> a:=h(); b:=h();
> if a=b then
> score:=score+1;print(gagné);
> else
> print(perdu);
> fi;
> i:=i+1;
> od;
> `Votre score est ` || score || ` sur ` || nb || ` essais`;
> end proc:
>
> jeu_tout_pourri(10);
perdu
gagné
perdu
perdu
gagné
gagné
perdu
perdu
perdu
perdu
Votre score est 3 sur 10 essais
|
|
|
Revenir en haut de page |
|
 |
ocelote
Inscrit le: 10 Sep 2006 Messages: 11
|
Posté le: 16 Sep 2006 12:43 Sujet du message: re |
|
|
aucun souci merci beaucoup je vais étudier la reponse en detail bonne journée et FOCK les hackers... |
|
Revenir en haut de page |
|
 |
ocelote
Inscrit le: 10 Sep 2006 Messages: 11
|
Posté le: 16 Sep 2006 12:56 Sujet du message: |
|
|
pouvez vous me dire quelle variable doit on mettre dans proc() et dans local car je ne vois pas la logique . merci |
|
Revenir en haut de page |
|
 |
ALS
Inscrit le: 11 Sep 2006 Messages: 647
|
Posté le: 16 Sep 2006 13:37 Sujet du message: |
|
|
Les variables que l'on met dans proc sont les paramètres formels passés à la procédure: ici, j'ai choisi de mettre le nombre d'essais nb au jeu.
Les variables que l'on met dans local sont des variables locales, uniquement accessibles à l'intérieur de la procédure. Ici: score,h,i,a,b.
Etudiez le chapitre du cours sur la programmation pour avoir davantage d'exemples:
http://alamanya.free.fr/cours/chapn31.htm
A+ |
|
Revenir en haut de page |
|
 |
ocelote
Inscrit le: 10 Sep 2006 Messages: 11
|
Posté le: 16 Sep 2006 19:43 Sujet du message: |
|
|
merci  |
|
Revenir en haut de page |
|
 |
ocelote
Inscrit le: 10 Sep 2006 Messages: 11
|
Posté le: 16 Sep 2006 23:26 Sujet du message: new one |
|
|
et bien avec le lien que vous m'avez passé j'ai pu faire un nouveau programme mais je ne suis pas capable de reconnaitre mes erreurs et je suis par la meme occasion désolé de poster a nouveau ici...
Code: |
> limfct:=proc(fonction)
> local lim1, lim2, lim3;
>
> fonction:=ax+b; # Taper une fonction avec x comme variable f:=x->ax+b
>
> lim1:=limit(fonction,x=infinity);
> if lim1<>infinity then print("limite "|| lim1 ||" BP d'axe Ox");
> else lim2:=limit(fonction / x , x=infinity);
>
> if lim2=0 then print("limite || lim2 || BP d'axe Ox");
> elif lim2=infinity then print("limite "|| lim2 ||" BP d'axe Oy");
> else lim3:=limit(fonction - "|| lim2 ||" * x , x=infinity);
>
> if lim3=infinity then print("limite "|| lim3 ||" BP d'axe Ox");
> else print("limite "|| lim3 ||" asymptote d'équation "||lim2||" x + " || lim3 ||" ");
> fi;
> fi;
> fi;
> end proc:
> limfct();
|
merci |
|
Revenir en haut de page |
|
 |
ALS
Inscrit le: 11 Sep 2006 Messages: 647
|
Posté le: 17 Sep 2006 9:52 Sujet du message: |
|
|
Bonjour, j'ai corrigé votre procédure et deux de vos conclusions mathématiques qui étaient fausses (limite finie et BP dans la direction asymptotique de la droite y=ax)
Code: |
> limfct:=proc(fonction)
> local lim1, lim2, lim3;
> lim1:=limit(fonction,x=infinity);
> if lim1<>infinity and lim1<>-infinity then print("limite finie "|| lim1);
> else
> lim2:=limit(fonction / x , x=infinity);
> if lim2=0 then print("limite" || lim2 || "BP d'axe Ox");
> elif lim2=infinity then print("limite "|| lim2 ||" BP d'axe Oy");
> else lim3:=limit(fonction - lim2* x , x=infinity);
> if lim3=infinity then print("limite "|| lim3 ||" .BP dans la direction asymptotique de la droite y=" || lim2 || "*x");
> else print("limite "|| lim3 ||" .Asymptote d'équation "||lim2||" x + " || lim3 ||" ");
> fi;
> fi;
> fi;
> end proc:
> limfct(-5*x+3+ln(x)/x);
"limite 3 .asymptote d'équation -5 x + 3 "
|
|
|
Revenir en haut de page |
|
 |
ocelote
Inscrit le: 10 Sep 2006 Messages: 11
|
Posté le: 17 Sep 2006 12:00 Sujet du message: |
|
|
^^ cela montre bien que j'ai mal appri mon cour
Je n'ai donc pas besoin de poser une variable fonction au debut ? il suffit de mettre sa apres le 'end proc' ?
Il faut donc considerer le programme comme un ensemble et non pas comme une suite linéaire de procédures ?
Je vous remercie grandement |
|
Revenir en haut de page |
|
 |
ALS
Inscrit le: 11 Sep 2006 Messages: 647
|
Posté le: 17 Sep 2006 15:26 Sujet du message: |
|
|
Oui, on commence par déclarer une procédure avec ses paramètres formels:
par une phrase du type
> nomproc:=proc(param1,param2,...,paramn)
> .... corps de la procédure
> end proc;
Ensuite on lance la procédure en donnant aux paramètres formels des valeurs par une phrase du type
> nomproc(val1,val2,...,valn);
où valj est la valeur donnée au paramètre formel paramj
A+ |
|
Revenir en haut de page |
|
 |
|