Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 20

 
Renat Akhtyamov:
for(int i=1; int i<int n; int i++)                                                                  
...
Oder? Ich bitte Sie.

Nein, ich meinte:

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

Ja, und der Entwurf, den Sie geschrieben haben, wird überhaupt nicht funktionieren.

 
Artyom Trishkin:
Jede Variable hat ihren eigenen Geltungsbereich. Auch innerhalb geschweifter Klammern gibt es einen eigenen Bereich für die in diesem Bereich deklarierte Variable - innerhalb der geschweiften Klammern. Warum sollte ich also z.B. an verschiedenen Stellen eines Programms Schleifenindexvariablen mit unterschiedlichen Namen anlegen, wenn ich weiß, dass sie sich nicht überschneiden und es ausreichend und üblich ist, einen solchen Variablennamen wie "i" zu verwenden?

Ich habe nicht mit Ihnen gestritten.

 
Renat Akhtyamov:
for(int i=1; int i<int n; int i++)                                                                  
...
Oder? Bitte sehr.
Sie merken selbst, dass Sie sich absichtlich ein schlechtes Beispiel ausgedacht haben, das sich kein vernünftiger Programmierer ausdenken würde.
 
Alexey Kozitsyn:

Nein, ich meinte:

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


Was ist der Grund dafür? Bitte teilen Sie uns Ihre Erfahrungen mit - was könnte das Problem in diesem Fall sein, d.h. wenn Ihr Code so aussehen würde?

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

Ich habe nicht mit Ihnen gestritten.

Dies ist mein Thema. Und wenn ich schlechte, suboptimale Ratschläge gebe, bin ich berechtigt, die Person zu korrigieren. Sie sind, was die vorliegende Situation betrifft, ein schlechter Ratgeber.
 
Artyom Trishkin:
Dies ist mein Thema. Und wenn schlechte, suboptimale Ratschläge erteilt werden, bin ich berechtigt, die Person zu korrigieren. Im Hinblick auf die vorliegende Situation geben Sie einen schlechten Rat.

Ihr Thema, dann lesen Sie es sorgfältig durch und bringen Sie den Beitrag mit dem Nickname in Verbindung, auf den Sie antworten.

Kurz gesagt, Sie sind am falschen Ort.

 
Renat Akhtyamov:

aber was soll das bringen? Bitte teilen Sie Ihre Erfahrungen mit - was könnte in diesem Fall das Problem sein, d. h. wenn Ihr Code so aussehen würde?

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

Wenn Sie einen Zähler außerhalb einer Schleife initialisieren, geht sein Geltungsbereich über die Schleife hinaus, was normalerweise nicht erforderlich ist. Damit schaffen Sie einen fruchtbaren Boden für mögliche Fehler, z. B. wenn Sie im weiteren Verlauf des Codes eine Variable j haben, die Sie versehentlich i nennen. Oder anstelle des Index [1] schreiben Sie [i], usw.

Daher müssen die Variablen so nah wie möglich an dem Ort initialisiert werden, an dem sie zum ersten Mal verwendet werden, und eine große Anzahl globaler Variablen muss vermieden werden. Dadurch wird die Liste der möglichen Fehler reduziert.

 
Alexey Kozitsyn:

Wenn Sie einen Zähler außerhalb einer Schleife initialisieren, geht sein Geltungsbereich über die Schleife hinaus, was normalerweise nicht notwendig ist. Auf diese Weise schaffen Sie einen fruchtbaren Boden für mögliche Fehler, z. B. wenn Sie weiter unten im Code eine Variable j haben und sie versehentlich i nennen. Oder anstelle des Index [1] schreiben Sie [i], usw.

Daher müssen die Variablen so nah wie möglich an dem Ort initialisiert werden, an dem sie zum ersten Mal verwendet werden, und es sollte versucht werden, eine große Anzahl von globalen Variablen zu vermeiden. Dadurch wird die Liste der möglichen Fehler reduziert.

Was hat das mit (....) zu tun?

Ich bin empört.

Wenn es heißt i=0 und i++?

Nun, i in einer anderen Schleife ändern?

Es wird nicht funktionieren

 
Renat Akhtyamov:

Was hat das damit zu tun?

Ich bin raus.

Sie können überall und in allem sein, das ist Ihr Recht. Sie haben mich um eine Erklärung gebeten - das habe ich getan.
 
Alexey Kozitsyn:
Sie können überall und in allem sein, das ist Ihr Recht. Sie haben mich um eine Erklärung gebeten - das habe ich getan.

Dabei ist nur zu beachten, dass nach dem Schleifenblock i bereits gleich x ist, sofern in der Schleife i<x

Array[i] nach for(...){} gibt einen Array-Überlauffehler zurück und das war's