Cela est également possible dans mql. Une fonction n'est pas appelée deux fois de plus à chaque fois qu'elle est appelée - il y a un retour au début de la fonction.
C'est ce qu'on appelle la récursion.
https://ru.wikipedia.org/wiki/Рекурсия
https://habr.com/ru/post/275813/
Cela est également possible dans mql. Une fonction n'est pas appelée deux fois de plus à chaque fois qu'elle est appelée - il y a un retour au début de la fonction.
C'est ce qu'on appelle la récursion.
https://ru.wikipedia.org/wiki/Рекурсия
https://habr.com/ru/post/275813/
Je suis en train de réécrire l'une des bibliothèques sur mql, en suivant vos conseils ;))
Suggérez aussi un bon livre, instructif et pas trop long.
J'ai lu Straustrup à l'université, mais je ne pense pas que vous ayez besoin d'un manuel sur les constructions de base du langage, vous avez déjà une expérience de la programmation, vous n'avez pas besoin de lire à partir de zéro.
Je n'ai jamais écrit en C#, mais j'avais l'habitude d'écrire des programmes Windows. Lorsque j'ai décidé de m'essayer au C#, l'aide en ligne a été très utile, toutes les petites questions ont été clarifiées, j'ai lu de courts articles sur cette ressource, la récursion C++ est brièvement décrite ici.
https://metanit.com/cpp/tutorial/3.6.php
Tutoriel général sur le C++https://metanit.com/cpp/tutorial/, je doute que vous trouviez des informations plus concises que sur ce site ;)
- metanit.com
J'ai lu Straustrup à l'université, mais je ne pense pas que vous ayez besoin d'un manuel sur les constructions de base du langage, vous avez déjà une expérience de la programmation, vous n'avez pas besoin de lire à partir de zéro.
Je n'ai jamais écrit en C#, mais j'avais l'habitude d'écrire des programmes Windows. Lorsque j'ai décidé de m'essayer au C#, l'aide en ligne a été très utile, toutes les petites questions ont été clarifiées, j'ai lu de courts articles sur cette ressource, la récursion C++ est brièvement décrite ici.
https://metanit.com/cpp/tutorial/3.6.php
Je doute que vous trouviez des informations plus concises que sur ce site ;)
La principale difficulté est que tout le code est écrit à l'aide de pointeurs et de goto, et qu'il y a beaucoup de choses inutiles avec l'allocation puis la suppression de la mémoire.
On peut donc affirmer que mql et CY sont des langages absolument différents. Même des constructions aussi simples que le passage de pointeurs au lieu de tableaux dans une fonction ne fonctionnent pas ici, c'est très difficile à réécrire.
Il est facile de se familiariser avec le langage, la principale difficulté réside dans le fait que tout le code est écrit à l'aide de pointeurs et de goto, il y a également beaucoup de choses inutiles avec l'allocation et la destruction de la mémoire.
C'est pourquoi il est évident que mql et CY sont des langages absolument différents. Même des constructions aussi simples que le passage de pointeurs au lieu de tableaux dans une fonction ne fonctionnent pas ici, c'est très difficile à réécrire.
Le processeur ne connaît pas les noms des identifiants (noms des variables), il ne connaît que les décalages relatifs des données (liens vers les adresses mémoire) et les données référencées doivent être typées - c'est ce que fait un pointeur - il décrit le type de données et l'endroit où les données sont stockées en mémoire.
MQL est vraiment un langage différent
- metanit.com
C'est ce qui est intéressant avec le C++ - il fonctionne avec des pointeurs, toute la flexibilité du langage est basée sur le travail avec des pointeurs - c'est-à-dire une imitation complète du travail avec la mémoire du processeur, le processeur ne connaît pas les noms des identifiants (noms des variables), il ne connaît que les décalages relatifs des données (en fait, les références aux adresses de la mémoire) et les données par référence doivent être typées - c'est ce que fait un pointeur - il décrit le type de données et l'endroit où les données sont stockées dans la mémoire.
MQL est vraiment un langage différent
Oui, merci, je suis déjà familier avec les pointeurs, et le livre a...
Le site est pratique, d'ailleurs, je l'ai ajouté à mes favoris.
voici un bon cours magistral vidéo pour les paresseux, du c au cp
Voici un exemple tiré de l'en-tête de la bibliothèque :
les structures sont créées avec des pointeurs vers quelque chose de pas clair (apparemment, ce sont des tableaux qui n'existent pas encore), alors je comprends qu'une ...er...variable de cette structuremine_score ; avec le même nom est déclarée?
typedef struct mine_score { int n; /* number of rows of M */ int *m; /* number of cols of M[i] for each i */ double **M; /* the (equi)characteristic matrix */ } mine_score;
nous devrons faire face à cela aussi
puis on déclare un f-i qui écrira son résultat directement dans l'espace mémoire de cette variable ?
mine_score *mine_compute_score(mine_problem *prob, mine_parameter *param);
Voici un exemple tiré de l'en-tête de la bibliothèque :
les structures sont créées avec des pointeurs vers quelque chose de pas clair (apparemment, ce sont des tableaux qui n'existent pas encore), alors je comprends qu'une ...er...variable de cette structuremine_score ; avec le même nom est déclarée?
nous devrons faire face à cela aussi
et ensuite nous déclarons un f qui écrira son résultat directement dans l'emplacement mémoire de cette variable ?
Non, le type de données déclaré ici est mine_score, qui est une structure mine_score.
Et la fonction renvoie un pointeur vers cette structure, qui sera créée à l'intérieur de cette fonction. Par conséquent, le but de la fonction est de créer une entité de type min_score et d'en transférer la propriété à la portée de l'appel de fonction.
Maxim Dmitrievsky:
il faudra également s'occuper de ce problème
puis on déclare un f-i qui écrira son résultat directement dans l'espace mémoire de cette variable ?
J'ai oublié depuis longtemps les typedefs, merci à MQL de m'aider à me souvenir de ces constructions encombrantes)), apparemment, c'est juste une déclaration de typemine_score, qui est une structure et la description de la structure a été "collée" dans la déclaration de type ( typedef ), mais je peux me tromper, voici une question similaire discutée et une explication assez détaillée:
http://qaru.site/questions/13054/typedef-struct-vs-struct-definitions
et ensuite vous déclarez un f-i qui écrira son résultat directement dans l'espace mémoire de cette variable ?
En C++, le programmeur est chargé de l'allocation de la mémoire, donc si le résultat d'une fonction renvoie un pointeurmine_score*, celui qui reçoit ce pointeur doit allouer de la mémoire, c'est-à-dire qu'il ne s'agit pas d'une variable mais d'un pointeur vers la donnée
- 2009.11.04
- user69514
- qaru.site
J'ai oublié les typedefs il y a longtemps, heureusement MQL aide à se souvenir de ces constructions encombrantes)), apparemment c'est juste une déclaration de typemine_score, qui est une structure et la description de la structure a été "collée" dans la déclaration de type ( typedef ) , mais je peux me tromper, voici une question similaire discutée et une explication assez détaillée:
http://qaru.site/questions/13054/typedef-struct-vs-struct-definitions
En C++, l'allocation de mémoire est la responsabilité du programmeur, donc si le résultat d'une fonction renvoie un pointeurmine_score *, celui quireçoit ce pointeur doit allouer la mémoire, c'est-à-dire qu'il ne s'agit pas d'une variable mais d'un pointeur sur les données.
#include "pch.h" #include <iostream> using namespace std; int* Foo(int i) { int* x = new int(i); return x; } int main() { int* x = Foo(5); cout << *x; delete x; return 0; }
J'ai alloué de la mémoire à l'intérieur de la fonction et je l'ai libérée dans la portée de la variable à laquelle j'ai passé la référence.
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Vous acceptez la politique du site Web et les conditions d'utilisation
comment fonctionne cette syntaxe ? le f-e est en lui même ? 2 fois aussi bien
Par ailleurs, pouvez-vous me recommander un bon livre instructif et pas trop long ?
J'en ai une.
Б. Kernighan, D. Ritchie
Le langage de programmation C.
Edition 3 révisée