[ARCHIVE !] Toute question de débutant, pour ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 4. - page 206

 
D'après moi, c'était le PARAMÈTRE TRANSFÉRABLE))))), mais je ne pouvais pas m'en passer))). Merci, je l'ai réparé et ça marche.
 
Aleksander:

cher... il n'est pas nécessaire d'écrire en si grosses lettres ici... vous pourriez vous casser les yeux :-)

et ceci... Avant de poser des questions... avez-vous essayé de lire l'aide de Metaeditor ? Tout ? ... pour commencer... pour que vous ne posiez pas de questions stupides sur les types et des trucs comme ça.....

===

Type d'opération pour la fonction OrderSend(). Peut être l'une des valeurs suivantes :

Constant Valeur Description
OP_BUY 0 Acheter
OP_SELL 1 Vendez
OP_BUYLIMIT 2 Ordre en attente BUY LIMIT
OP_SELLLIMIT 3 Ordre SELL LIMIT en attente
OP_BUYSTOP 4 Ordre BUY STOP en attente
OP_SELLSTOP 5 Ordre SELL STOP en attente
Cher Monsieur... il n'y a pas besoin d'être arrogant ici... Si quelque chose vous semble idiot, ne prenez pas la peine de répondre... Si Dieu le veut, il y a des gens sans la folie des grandeurs... C'est une section pour les débutants et si les gens posent des questions sur quelque chose, c'est qu'ils ne le comprennent pas... En outre, si tout était clair dans l'aide et dans le livre, je ne serais pas ici.
Venons-en au fait : disons que nous avons 3 ordres et que tous sont des ordres de marché. Alors, avec 3 itérations, nous n'atteindrons le bloc 4 dans aucune d'entre elles. Et après la dernière itération, nous passerons immédiatement au bloc 5, en contournant le bloc 4. Le bloc 5 contient la variable Tip, qui est déclarée dans le bloc 4. Mais le bloc 4 n'a pas été exécuté. La variable Tip n'est donc pas déclarée. Donc on utilise la variable avant de la déclarer ?

 
Pourquoi ? Le compilateur a alloué un espace mémoire pour la variable lors de la première passe... et y accéder ne provoquera pas d'erreur...
 
Aleksander:
Pourquoi ? Le compilateur a alloué un espace mémoire pour la variable lors de la première passe... et y accéder ne provoquera pas d'erreur...


Le point suivant n'est pas clair : au premier passage (en supposant que les 3 ordres sont des ordres au marché), nous n'arrivons pas au bloc 4, puisque la condition if(OrderType()<2) est remplie au bloc 3. Ensuite, l'itérateur suivant continue l'itération en cours et saute le bloc 4, où la variable Tip est déclarée. Cela signifie que la variable Tip n'a pas été déclarée lors de la première itération (c'est-à-dire que la ligne déclarant la variable Tip n'a pas été exécutée)... Et ainsi de suite pour les 3 itérations. C'est-à-dire qu'après la 3ème itération nous arrivons au bloc 5, qui utilise la variable Tip, c'est-à-dire qu'elle n'a pas été déclarée plus tôt (c'est-à-dire que nous avons une chaîne avec sa déclaration, mais comme nous ne sommes jamais arrivés au bloc 4, nous n'avons pas déclaré cette variable ?)

 

Je faisais référence à la traversée du texte du programme par le compilateur - ayant trouvé une définition de variable à n'importe quel endroit d'une fonction - le métacompilateur a déclaré cette variable pour une utilisation en aval - malgré le fait qu'il n'y avait aucune référence réelle à l'initialisation de la variable... - c'est l'environnement :-)

int start()  {
       int l=1;
       
       if (l == 2) {
          int kk=99;
          kk = 100;
       }
   }
   if (kk != 10) { Print("net kk takoi peremennoi = ", kk); }


Même s'il n'y avait pas d'entrée dans la condition - le compilateur a alloué un emplacement mémoire pour la variable... bien qu'il ne l'ait pas initialisé... dans Print il sera = 0

 
Aleksander:

Je faisais référence à la traversée du texte du programme par le compilateur - ayant trouvé une définition de variable à n'importe quel endroit d'une fonction - le métacompilateur a déclaré cette variable pour une utilisation en aval - malgré le fait qu'il n'y avait aucune référence réelle à l'initialisation de la variable... - c'est l'environnement :-)


Même s'il n'y avait pas d'entrée dans la condition - le compilateur a alloué un emplacement mémoire pour la variable... bien qu'il ne l'ait pas initialisé... dans Print il sera = 0



Donc, si je comprends bien : le compilateur, contrairement au terminal (en gros) n'exécute pas de boucles, mais se contente de lire les lignes à la suite et de vérifier les erreurs... C'est-à-dire que l'élément principal pour lui (qui est le critère de présence/absence d'erreur) est que la ligne (position), où une variable a été utilisée, doit venir APRÈS la ligne (position), où cette variable a été déclarée ?
 
on peut le dire :-) si vous faites une déclaration en dessous - et accédez à la variable au-dessus - le compilateur générera une erreur...
 
Aleksander:
on peut le dire :-) si vous faites une déclaration en dessous - et accédez à la variable au-dessus - le compilateur générera une erreur...

Je l'ai, merci beaucoup... Des conseils sur les variables GV ?
 

Et eux ? - global au niveau du terminal ?

ils stockent du temps dans un fichier variable :-) la date d'accès, le nom et la valeur de type double
 
PS - et aussi - indirectement :-) - vous pouvez stocker jusqu'à 63 lettres dans un nom de variable - qu'il soit russe ou anglais...
Raison: