Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 20

 
Renat Akhtyamov:
for(int i=1; int i<int n; int i++)                                                                  
...
n'est-ce pas ? S'il vous plaît.

Non, je voulais dire :

for( int i = 0; i < x; i++ )
{
}
for( int i = 0; i < x; i++ )
{
}
...

Oui, et la conception que vous avez écrite ne fonctionnera pas du tout.

 
Artyom Trishkin:
Chaque variable a sa propre portée. Même à l'intérieur des accolades, il existe une portée distincte pour la variable déclarée dans cette portée - à l'intérieur des accolades. Alors pourquoi devrais-je, par exemple, créer des variables d'index de boucle avec des noms différents à différents endroits d'un programme, si je sais qu'elles ne se chevauchent pas, et qu'il est suffisant, et habituel, d'utiliser un nom de variable tel que "i" ?

Je n'ai pas discuté avec vous.

 
Renat Akhtyamov:
for(int i=1; int i<int n; int i++)                                                                  
...
n'est-ce pas ? Vous êtes les bienvenus.
Vous vous rendez compte vous-même que vous avez délibérément inventé un mauvais exemple qu'aucun programmeur sain d'esprit n'inventerait.
 
Alexey Kozitsyn:

Non, je voulais dire :

for( int i = 0; i < x; i++ )
{
}
for( int i = 0; i < x; i++ )
{
}
...


quel est le but ? Veuillez partager votre expérience - quel pourrait être le problème dans ce cas, c'est-à-dire si votre code était comme ceci ?

int i;
for( i = 0; i < x; i++ )
{
}
for( i = 0; i < x; i++ )
{
}
...
 
Renat Akhtyamov:

Je ne discutais pas avec vous.

C'est mon fil conducteur. Et lorsque je donne de mauvais conseils, des conseils non optimaux, j'ai le droit de corriger la personne. Vous, en ce qui concerne la situation actuelle, vous donnez de mauvais conseils.
 
Artyom Trishkin:
C'est mon fil conducteur. Et lorsque de mauvais conseils sous-optimaux sont donnés, j'ai le droit de corriger la personne. Vous, par rapport à la situation actuelle, vous donnez de mauvais conseils.

Votre fil de discussion, puis lisez-le attentivement et faites le lien entre le message et le pseudonyme auquel vous répondez.

En bref, vous êtes au mauvais endroit.

 
Renat Akhtyamov:

mais quel est l'intérêt ? Veuillez partager votre expérience - quel pourrait être le problème dans ce cas, c'est-à-dire si votre code était comme ceci ?

int i;
for( i = 0; i < x; i++ )
{
}
for( i = 0; i < x; i++ )
{
}
...

Lorsque vous initialisez un compteur en dehors d'une boucle, sa portée s'étend au-delà de la boucle, ce qui n'est généralement pas nécessaire. Ainsi, vous fournissez un terrain fertile pour d'éventuelles erreurs, par exemple, si plus loin dans le code vous aurez une variable j, et que vous l'appelez accidentellement i. Ou au lieu de l'indice [1], on écrit [i], etc.

Il faut donc initialiser les variables le plus près possible de l'endroit où elles sont utilisées pour la première fois et éviter un grand nombre de variables globales. Cela réduit la liste des erreurs possibles.

 
Alexey Kozitsyn:

Lorsque vous initialisez un compteur en dehors d'une boucle, sa portée s'étend au-delà de la boucle, ce qui n'est généralement pas nécessaire. En faisant cela, vous créez un terrain fertile pour d'éventuelles erreurs, par exemple si, plus loin dans le code, vous avez une variable j et que vous l'appelez accidentellement i. Ou au lieu de l'indice [1], on écrit [i], etc.

Il faut donc initialiser les variables aussi près que possible de l'endroit où elles sont utilisées pour la première fois et essayer d'éviter un grand nombre de variables globales. Cela réduit la liste des erreurs possibles.

Qu'est-ce que cela a à voir avec (....) ?

Je suis indigné.

Si cela dit i=0 et i++ ?

Eh bien, changer i dans une autre boucle ?

Il ne fonctionnera pas

 
Renat Akhtyamov:

Qu'est-ce que ça a à voir avec ça ?

Je me retire.

Tu peux être n'importe où et dans n'importe quoi, c'est ton droit. Vous m'avez demandé d'expliquer - je l'ai fait.
 
Alexey Kozitsyn:
Tu peux être n'importe où et dans n'importe quoi, c'est ton droit. Vous m'avez demandé d'expliquer - je l'ai fait.

La seule chose à considérer ici est qu'après le bloc de la boucle, i est déjà égal à x, à condition que dans la boucle i<x

Array[i] après for(...){} retournera l'erreur de dépassement de tableau et c'est tout.

Raison: