Résolution d'une équation du second ordre

Résolution d'une équation du second ordre - C - Programmation

Marsh Posté le 31-01-2007 à 19:57:51    

Bonjour à tous,  :jap:  
 
C'est mon premier post dans cette section, je découvre un petit peu le C et je me suis amusé à faire un petit programme qui calcule le discriminant d'une équation du 2nd ordre et calcule les racines:
 

Code :
  1. #include <stdio.h>
  2. int main(void)
  3. {
  4.    
  5.     // déclaration des variables //
  6.    
  7.     float delta,a,b,c,z1,z2,racinedelta;
  8.      
  9.     // aperçu de la formule //
  10.    
  11.     printf("\n\nLa formule est: \t ax^2 + bx + c = 0\n\n\n" );
  12.    
  13.    
  14.     // on tape les valeurs à rentrer //
  15.      
  16.     printf("Valeur de a: \t" );
  17.     scanf("%f",&a);
  18.    
  19.     printf("Valeur de b: \t" );
  20.     scanf("%f",&b);
  21.    
  22.     printf("Valeur de c: \t" );
  23.     scanf("%f",&c);
  24.    
  25.    
  26.     // calcul du discriminant //
  27.    
  28.     printf("\n\nCalcul du discriminant: \n\n" );
  29.    
  30.     delta= (b*b) - (4*a*c);
  31.    
  32.     printf("\nle discriminant vaut: \t%f\n\n",delta);
  33.    
  34.    
  35.     // conditions pour les racines //
  36.      
  37.     if(delta>0)
  38.    
  39.            {   
  40.                racinedelta=sqrt(delta);
  41.              
  42.                z1= ((-b)+racinedelta)/(2*a);
  43.                z2= ((-b)-racinedelta)/(2*a);
  44.              
  45.                printf("il existe 2 solutions, z1 et z2:\n \nz1= %f \n\nz2= %f\n\n",z1,z2);
  46.            } 
  47.     else
  48.    
  49.     if(delta==0)
  50.    
  51.    
  52.              { 
  53.                printf("Solution double car discriminant = 0\n\n" );
  54.              
  55.                z1=z2= (-b)/(2*a);
  56.              
  57.                printf("z1 = z2 = %f\n\n",z1);
  58.              }
  59.            
  60.     else
  61.              
  62.     if(delta<0)
  63.    
  64.      
  65.                printf("il n'existe pas de racines reelles\n\n" );
  66.              
  67.    
  68.  
  69.   system("PAUSE" );
  70.   return 0;
  71. }


 
Merci de me dire ce que vous en pensez et les éventuelles choses à améliorer dans la présentation/structure de mon code  :jap: , autant prendre les bonnes habitudes tout de suite.   :D
 
 


---------------
Pseudo Rocket League: Topper Harley
Reply

Marsh Posté le 31-01-2007 à 19:57:51   

Reply

Marsh Posté le 31-01-2007 à 20:14:20    

Petite remarque:
il faut inclure math.h pour pouvoir utiliser la fonction sqrt(), autrement ça va déclencher un comportement indéfini.
http://mapage.noos.fr/emdel/notes.htm#ub

Message cité 1 fois
Message édité par bad___day le 31-01-2007 à 20:19:17
Reply

Marsh Posté le 31-01-2007 à 20:16:40    

bad___day a écrit :

Petite remarque:
il faut inclure math.h pour pouvoir utiliser la fonction sqrt(), autrement ça va déclencher un comportement indéfini.


 
 
C'est noté  :jap:


---------------
Pseudo Rocket League: Topper Harley
Reply

Marsh Posté le 31-01-2007 à 20:29:32    

k-nar a écrit :

Bonjour à tous,  :jap:  
 
C'est mon premier post dans cette section, je découvre un petit peu le C et je me suis amusé à faire un petit programme qui calcule le discriminant d'une équation du 2nd ordre et calcule les racines:
 

Code :
  1. #include <stdio.h>
  2. int main(void)
  3. {
  4.    
  5.     // déclaration des variables //
  6.    
  7.     float delta,a,b,c,z1,z2,racinedelta;
  8.      
  9.     // aperçu de la formule //
  10.    
  11.     printf("\n\nLa formule est: \t ax^2 + bx + c = 0\n\n\n" );
  12.    
  13.    
  14.     // on tape les valeurs à rentrer //
  15.      
  16.     printf("Valeur de a: \t" );
  17.     scanf("%f",&a);
  18.    
  19.     printf("Valeur de b: \t" );
  20.     scanf("%f",&b);
  21.    
  22.     printf("Valeur de c: \t" );
  23.     scanf("%f",&c);
  24.    
  25.    
  26.     // calcul du discriminant //
  27.    
  28.     printf("\n\nCalcul du discriminant: \n\n" );
  29.    
  30.     delta= (b*b) - (4*a*c);
  31.    
  32.     printf("\nle discriminant vaut: \t%f\n\n",delta);
  33.    
  34.    
  35.     // conditions pour les racines //
  36.      
  37.     if(delta>0)
  38.    
  39.            {   
  40.                racinedelta=sqrt(delta);
  41.              
  42.                z1= ((-b)+racinedelta)/(2*a);
  43.                z2= ((-b)-racinedelta)/(2*a);
  44.              
  45.                printf("il existe 2 solutions, z1 et z2:\n \nz1= %f \n\nz2= %f\n\n",z1,z2);
  46.            } 
  47.     else
  48.    
  49.     if(delta==0)
  50.    
  51.    
  52.              { 
  53.                printf("Solution double car discriminant = 0\n\n" );
  54.              
  55.                z1=z2= (-b)/(2*a);
  56.              
  57.                printf("z1 = z2 = %f\n\n",z1);
  58.              }
  59.            
  60.     else
  61.              
  62.     if(delta<0)
  63.    
  64.      
  65.                printf("il n'existe pas de racines reelles\n\n" );
  66.              
  67.    
  68.  
  69.   system("PAUSE" );
  70.   return 0;
  71. }


 
Merci de me dire ce que vous en pensez et les éventuelles choses à améliorer dans la présentation/structure de mon code  :jap: , autant prendre les bonnes habitudes tout de suite.   :D


 
Boaf, c'est un joli programme bien écrit. Je me rappelle quand j'ai commencé à apprendre le basic, j'avais écrit le même !!!
 
Bon, voici mes remarques de bases
1) tu as bien pensé à mettre "int main" et "return 0" => c'est super
2) tu peux utiliser l'indentation pour bien montrer quel bloc correspond au else et quel autre au if. Certains n'aiment pas l'indentation parce qu'elle varie suivant les éditeurs (chacun est libre) donc tu peux utiliser les espaces mais l'important est de bien aligner les blocs
3) essaye de prendre l'habitude de découper ton programme en tâches élémentaires. C'est pas évident avec un aussi petit truc mais tu verras, ensuite cela te sera très profitable. Par exemple tu pourrais déléguer une fonction pour saisir les 3 coefficients, une autre pour afficher le résultat. Bon, ça viendra avec le temps
 
Ma remarque la plus importante viendra avec scanf(). Je sais que c'est la première fonction qu'on apprend aux débutants mais c'est la pire car elle attend une entrée "formatée" et, par définition, ce que tape un gazier à qui on dit "entrer un nombre" derrière
son clavier est souvent tout sauf du nombre. Pour toi ça va car tu es le créateur de ton programme mais si tu écris un programme pour un tiers, il faut bannir "scanf()" car tu n'arriveras jamais à bien contrôler ce que tape le gars. Surtout si le gars tapes du texte là où scanf attend un nombre, alors
1) le nombre ne sera pas rempli
2) le buffer d'entrée "clavier" gardera ce texte dans sa mémoire => dès que tu feras saisir un texte par scanf (par exemple un nom) alors scanf récupèrera la chaîne qu'il a conservée de la saisie précédente et c'est cette chaîne que tu recevras => gros bug !!!
 
La bonne façon de faire saisir un nombre (ou 2 ou 3 ou 50) à quelqu'un est la suivante
1) tu fais saisir une chaîne avec "fgets(chaine, xxx, stdin)" avec "xxx" le nombre de car. max que tu acceptes; en ayant évidemment pris soin de tailler ta chaîne suffisemment grande pour accepter "xxx" octets
2) tu fais un "n=sscanf(chaine, "%... %... %...", &var1, &var2, ...)" avec autant de variables que t'as besoin
3) tu vérifies que "n" vaut bien le nombre de variables attendu. Een effet, "sscanf()" renvoie systématiquement le nombre de variables qu'il a remplies => si "n" ne vaut pas la bonne valeur, tu recommences au "1"
 
Avec cette méthode, le gars peut taper ce qu'il veut => c'est du texte donc ce sera stocké dans la chaîne => s'il n'a pas tapé ce qu'il faut "sscanf()" n'arrivera pas à remplir les variables et tu détecteras cette anomalie grace à "n". CQFD!!!

Message cité 1 fois
Message édité par Sve@r le 31-01-2007 à 21:00:00

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Marsh Posté le 31-01-2007 à 20:58:57    

Sve@r a écrit :

Boaf, c'est un joli programme bien écrit. Je me rappelle quand j'ai commencé à apprendre le basic, j'avais écrit le même !!!
 
Bon, voici mes remarques de bases
1) tu as bien pensé à mettre "int main" et "return 0" => c'est super
2) tu peux utiliser l'indentation pour bien montrer quel bloc correspond au else et quel autre au if. Certains n'aiment pas l'indentation parce qu'elle varie suivant les éditeurs (chacun est libre) donc tu peux utiliser les espaces mais l'important est de bien aligner les blocs
3) essaye de prendre l'habitude de découper ton programme en tâches élémentaires. C'est aps évident avec un aussi petit truc mais tu verras, ensuite cela te sera très profitable. Par exemple tu pourrais déléguer une fonction pour saisir les 3 coefficients, une autre pour afficher le résultat. Bon, ça viendra avec le temps
 
Ma remarque la plus importante viendra avec scanf(). Je sais que c'est la première fonction qu'on apprend aux débutants mais c'est la pire car elle attend une entrée "formatée" et, par définition, ce que tapes un gazier à qui on dit "entrer un nombre" derrière
son clavier est souvent tout sauf du nombre. Pour toi ça va car tu es le créateur de ton programme mais si tu écrits un programme pour un tiers, il faut bannir "scanf()" car tu n'arriveras jamais à bien contrôler ce que tape le gars. Surtout si le gars tapes du texte là où scanf attend un nombre, alors
1) le nombre ne sera pas rempli
2) le buffer d'entrée "clavier" gardera ce texte dans sa mémoire => dès que tu feras saisir un texte par scanf (par exemple un nom) alors scanf récupèrera la chaîne qu'il a conservée de la saisie précédente et c'est cette chaîne que tu recevras => gros bug !!!
 
La bonne façon de faire saisir un nombre (ou 2 ou 3 ou 50) à quelqu'un est la suivante
1) tu fais saisir une chaîne avec "fgets(chaine, xxx, stdin)" avec "xxx" le nombre de car. max que tu acceptes; en ayant évidemment pris soin de tailler ta chaîne suffisemment grande pour accepter "xxx" octets
2) tu fais un "n=sscanf(chaine, "%... %... %...", &var1, &var2, ...)" avec autant de variables que t'as besoin
3) tu vérifies que "n" vaut bien le nombre de variables attendu. Een effet, "sscanf()" renvoie systématiquement le nombre de variables qu'il a remplies => si "n" ne vaut pas la bonne valeur, tu recommences au "1"
 
Avec cette méthode, le gars peut taper ce qu'il veut => c'est du texte donc ce sera stocké dans la chaîne => s'il n'a pas tapé ce qu'il faut "sscanf()" n'arrivera pas à remplir les variables et tu détecteras cette anomalie grace à "n"


 
Très instructifs tes commentaires  :jap:  
 
2) Pour l'indentation effectivement je vais faire un effort car là il n'y a pas beaucoup de code donc ça va mais avec beaucoup plus ça doit pas être super lisible si je continue comme ça.  
 
3) Par contre c'est vrai que le scanf c'est ce qu'on apprend au début et j'étais loin d'imaginer ce que tu viens de me dire  :ouch:  
Je vais essayer de voir si j'arrive à modifier avec fgets et sscanf  :jap:  
 
Merci beaucoup pour ton explication détaillé, surtout pour la rôle de chaque fonction parce que des fois c'est super vague même dans des tutos   :sweat:  


---------------
Pseudo Rocket League: Topper Harley
Reply

Marsh Posté le 31-01-2007 à 21:14:26    

k-nar a écrit :

Par contre c'est vrai que le scanf c'est ce qu'on apprend au début et j'étais loin d'imaginer ce que tu viens de me dire  :ouch:


Essaye juste ça

#include <stdio.h>
int main(void)
{
     char nom[50];
     int age;
 
     while(1)
     {
           printf("Entrez votre age ?\n" );
           scanf("%d", &age);
 
           printf("Entrez votre nom ?\n" );
           scanf("%s", nom);
 
           printf("age=%d, nom=[%s]\n", age, nom);
      }
 
      return 0;
}


       
Ce programme parait clair et simple, pourtant ça m'étonnerait que t'arrives à saisir le nom. Faut pas en vouloir aux bouquins ! On est obligé de commencer par "scanf()" car c'est le plus facile à expliquer pour démarrer et on est obligé de faire des entrées/sorties pour les exercices. Mais c'est très dur de "bien" l'utiliser...
 
De toute façon, chaque fois que tu apprendras un truc nouveau, garde bien en mémoire que l'esprit humain ne peut pas progresser autrement qu'en détruisant en partie ce qui a été fait avant. Cela n'est pas seulement vrai pour l'Humanité dans son histoire, c'est aussi vrai pour tout individu. Comment comprendre que c'est la Terre qui tourne autour du Soleil si on n'a pas d'abord vu le Soleil en mouvement autour de la Terre ? Même si l'idée première qu'on se fait de cette vision est fausse, elle servira ensuite à comprendre plus facilement la réalité. C'est pareil avec le C. On commence par te montrer "scanf()" puis un jour, on te dit qu'il ne faut surtout pas l'utiliser...


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Marsh Posté le 01-02-2007 à 13:34:56    

Petite mise à jour, j'ai donc changé mes scanf par des fgets et sscanf  :jap: , puis j'ai découpé mon programme en plusieurs parties avec rappel de fonctions:
 

Code :
  1. #include <stdio.h>
  2. #include <math.h>
  3.           // déclaration des variables //
  4.           float delta,a,b,c,z1,z2,racinedelta;
  5.           char chaine1[20],chaine2[20],chaine3[20];
  6.           int nombre,ret;
  7.                
  8.     void apercu()
  9.    
  10.          {
  11.                  printf("\n\nLa formule est: \t ax^2 + bx + c = 0\n\n\n" );
  12.        
  13.          }
  14.             void valeurs()
  15.                
  16.                  {        // on tape les valeurs à rentrer //
  17.                          
  18.                           // pour a //
  19.                          
  20.                   do
  21.                         {
  22.                         printf("Valeur de a : \t" );
  23.                         fgets(chaine1,5, stdin);
  24.                         ret = sscanf(chaine1, "%f", &a);
  25.                         }
  26.                        
  27.                         while (ret != 1);
  28.                          
  29.                        
  30.                         // pour b //
  31.                        
  32.                 do
  33.                         {
  34.                         printf("Valeur de b : \t" );
  35.                         fgets(chaine2,5, stdin);
  36.                         ret = sscanf(chaine2, "%f", &b);
  37.                         }
  38.                        
  39.                         while (ret != 1);
  40.                        
  41.                        
  42.                         // pour c //
  43.                        
  44.                 do
  45.                         {
  46.                         printf("Valeur de c : \t" );
  47.                         fgets(chaine3,5, stdin);
  48.                         ret = sscanf(chaine3, "%f", &c);
  49.                         }
  50.                        
  51.                         while (ret != 1);
  52.                        
  53.                
  54.                 }
  55.    
  56.    
  57.    
  58.                     void discriminant()
  59.                    
  60.                          {
  61.                                      
  62.                                    // calcul du discriminant //
  63.                        
  64.                         printf("\n\nCalcul du discriminant: \n\n" );
  65.                        
  66.                         delta= (b*b) - (4*a*c);
  67.                        
  68.                         printf("\nle discriminant vaut: \t%f\n\n",delta);
  69.                        
  70.                         }
  71.                                 void conditions()
  72.                                
  73.                                      {
  74.                                                   // conditions pour les racines //
  75.                                      
  76.                                     if(delta>0)
  77.                                    
  78.                                            {   
  79.                                                racinedelta=sqrt(delta);
  80.                                              
  81.                                                z1= ((-b)+racinedelta)/(2*a);
  82.                                                z2= ((-b)-racinedelta)/(2*a);
  83.                                              
  84.                                                printf("il existe 2 solutions, z1 et z2:\n \nz1= %f \n\nz2= %f\n\n",z1,z2);
  85.                                            } 
  86.                                     else
  87.                                    
  88.                                             if(delta==0)
  89.                                            
  90.                                            
  91.                                                      { 
  92.                                                        printf("Solution double car discriminant = 0\n\n" );
  93.                                                      
  94.                                                        z1=z2= (-b)/(2*a);
  95.                                                      
  96.                                                        printf("z1 = z2 = %f\n\n",z1);
  97.                                                      }
  98.                                            
  99.                                     else
  100.                                              
  101.                                                     if(delta<0)
  102.                                                    
  103.                                                      
  104.                                                                printf("il n'existe pas de racines reelles\n\n" );
  105.                                              
  106.                                         }
  107.    
  108.     int main(void)
  109.         {
  110.             apercu();
  111.            
  112.             valeurs();
  113.            
  114.             discriminant();
  115.            
  116.             conditions();
  117.            
  118.          
  119.           system("PAUSE" );
  120.           return 0;
  121.         }


 
 
A priori ( :whistle: ) ça marche correctement, si on rentre un texte on nous demande de retaper un nombre.  
 
Par contre un petit problème j'ai essayé de limiter à 4 chiffres maxi insérables mais si je dépasse cette limite pour "a" par exemple il passe directement à "c" sans me demander de rentrer "b".  :??:
Y a sûrement un truc tout bête pour éviter ça mais là je vois pas pour l'instant.  :sweat:  


---------------
Pseudo Rocket League: Topper Harley
Reply

Marsh Posté le 01-02-2007 à 13:48:47    

c'est parce que la fin de ta chaine de caractères n'est pas lue par le premier fgets, mais reste dans le buffer d'entrée. Du coup lorsque tu arrives au deuxième fgets pour entrer b, celui-ci peut directement lire les caractères restants sans attendre que tu tapes quelque chose au clavier.
De la même manière, si tu entrais directement un nombre à plus de 9 chiffres, ton programme ne te demanderait ni b, ni c, puisque même le gets de b ne suffirait pas pour vider le buffer entièrement.
 
Pour éviter ce type de désagréments, la manière classique de faire est de vider à la main le buffer d'entrée avant chaque saisie. Comme ça tu te débarrasses des restes qui pourraient avoir été laissés par les appels précédents à fgets()
 
Je crois que tu peux trouver un bon exemple d'entrées-sorties solides sur le site d'Emmanuel Delahaye.


---------------
TriScale innov
Reply

Marsh Posté le 01-02-2007 à 14:00:58    

franceso a écrit :

c'est parce que la fin de ta chaine de caractères n'est pas lue par le premier fgets, mais reste dans le buffer d'entrée. Du coup lorsque tu arrives au deuxième fgets pour entrer b, celui-ci peut directement lire les caractères restants sans attendre que tu tapes quelque chose au clavier.
De la même manière, si tu entrais directement un nombre à plus de 9 chiffres, ton programme ne te demanderait ni b, ni c, puisque même le gets de b ne suffirait pas pour vider le buffer entièrement.
 
Pour éviter ce type de désagréments, la manière classique de faire est de vider à la main le buffer d'entrée avant chaque saisie. Comme ça tu te débarrasses des restes qui pourraient avoir été laissés par les appels précédents à fgets()
 
Je crois que tu peux trouver un bon exemple d'entrées-sorties solides sur le site d'Emmanuel Delahaye.


 
 
Merci pour ton explication, donc il faut vider le buffer après chaque entrée si j'ai bien compris sinon le dépassement est compté comme une entrée sur la prochaine variable.
J'ai acheté un bouquin sur le C hier je vais voir si je trouve des exemples.  :jap:  
 
PS: c'est celui là:
 
http://vrlab.epfl.ch/~boulic/C_MicroTechnique/Delannoy_ref_2002.jpg
 
Il est complet et pas mal détaillé je trouve.


---------------
Pseudo Rocket League: Topper Harley
Reply

Marsh Posté le 01-02-2007 à 14:14:04    

Je sais pas ce que vaut ce bouquin exactement, mais j'ai les équivalents fortran et C++ du même auteur, et ils sont plutôt pas mal pour commencer (mais par contre, il faudra sans doute trouver mieux si tu comptes t'en servir comme référence plus tard)


---------------
TriScale innov
Reply

Marsh Posté le 01-02-2007 à 14:14:04   

Reply

Marsh Posté le 01-02-2007 à 16:23:51    

k-nar a écrit :

...puis j'ai découpé mon programme en plusieurs parties avec rappel de fonctions:


 
Ca c'est vraiment bien. Ce qui l'est moins, c'est l'utilisation de variables globales. La variable globale c'est "mal" (tout comme "croiser les effluves" dans "ghostbuster" ).
Bon, c'est bien beau d'affirmer qqchose mais encore faut-il pouvoir l'etayer... Eh ben c'est simplement parce qu'utiliser une variable globale c'est la porte ouverte à la modif indéterminée. Tu ne peux plus la contrôler. Toute fonction est suceptile de modifier une variable globale et si une variable globale est modifiée accidentellement, tu auras énormément de mal pour trouver où cela s'est passé.
 
Le C offre l'avantage fantastique de pouvoir avoir des variables locales, c'est à dire des variables qui ne sont connues et accessibles que dans la fonction qui les utilise. Autant s'en servir. Et si une seconde fonction a besoin de récupérer une info venant de la première, les paramètres sont fait pour ça.
 
Personnellemnt j'ai tellement pris l'habitude que les variables soient locales à une fonction et tellement utilisé cet avantage que j'avais supposé que c'était la même chose en shell (Unix) alors que ça ne l'est pas (on peut le faire mais faut explicitement le demander) et le jour où j'ai écrit ma première fonction shell, avec des variable "i" et "j" qui se couraient après dans ma fonction pendant que j'avais des "i" et "j" qui se couraient après mais dans l'autre sens dans mon programme ben j'ai eu le gros bug. Non, vraiment, la variable "locale" c'est une grande force du C !!!
 

k-nar a écrit :

J'ai acheté un bouquin sur le C hier


Dommage, avant d'acheter au hasard tu aurais pu nous demander conseil sur les livres qu'on connait. Tu peux aussi télécharger mon cours gratuitement ici http://fr.lang.free.fr/cours/Langa [...] e_v2.0.pdf. Tu peux aussi trouver un super cours au format HTML ici http://mapage.noos.fr/emdel...


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Marsh Posté le 01-02-2007 à 16:36:05    

Sve@r a écrit :


 
Le C offre l'avantage fantastique de pouvoir avoir des variables locales, c'est à dire des variables qui ne sont connues et accessibles que dans la fonction qui les utilise. Autant s'en servir. Et si une seconde fonction a besoin de récupérer une info venant de la première, les paramètres sont fait pour ça.
Non, vraiment, la variable "locale" c'est une grande force du C !!!
 
 
 
 
Dommage, avant d'acheter au hasard tu aurais pu nous demander conseil sur les livres qu'on connait. Tu peux aussi télécharger mon cours gratuitement ici http://fr.lang.free.fr/cours/Langa [...] e_v2.0.pdf. Tu peux aussi trouver un super cours au format HTML ici http://mapage.noos.fr/emdel...


 
 
Ok c'est vrai que j'ai hésité à les déclarer en local, je vais prendre cette habitude  :jap:  
 
Pour le livre oui je n'ai pas pensé à demander vos avis :/ mais ça va le mien contient pas mal d'exemples c'est surtout de ça dont j'ai besoin parce que j'ai une mémoire très visuelle, je viens de télécharger ton cours et je le ferais imprimer ça me servira sûrement. ;)


---------------
Pseudo Rocket League: Topper Harley
Reply

Marsh Posté le 01-02-2007 à 16:53:00    

k-nar a écrit :

Ok c'est vrai que j'ai hésité à les déclarer en local, je vais prendre cette habitude  :jap:


Pour l'instant, le seul langage que j'ai connu qui dépasse, à mon avis, le C sur ce point c'est Python. En Python, une variable du programme principal est automatiquement connue de toutes ses fonctions, mais est automatiquement mise en "readonly" (sauf si c'est demandé explicitement "readwrite" ). Donc on peut se passer des paramètres mais on ne peut pas la modifier accidentellement...


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed