Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 634

 

Quelqu'un a-t-il un morceau de code pour un exemple où les éléments d'un tableau de chaînes de caractères sont groupés par ordre alphabétique ?

Merci d'avance.

 
Hobu:

Ici

https://docs.mql4.com/ru/basis/operators/return

il est dit :

" Vous pouvez renvoyer des types simples, des structures simples et des pointeurs vers des objets . L'opérateurreturn ne peut pas renvoyer de tableaux, d'objets de classe ou de variables de type structure complexe.

"

Cela ressemble-t-il à ce qui est nécessaire ?

Des identifiants russes sont utilisés, ce qui donne un aspect un peu inhabituel :

#property strict

/******************************************************************************/
struct ОфигеннаяСтруктура {
private:
  int значение;

public:
  ОфигеннаяСтруктура(int значение = 0): значение(значение) { }
  int выдатьЗначение() const { return значение; }
};

/******************************************************************************/
ОфигеннаяСтруктура Функа(int значение) {
  ОфигеннаяСтруктура местная(значение);

  return местная; // Возвращаем структуру из функции
}

/******************************************************************************/
void OnStart() {
  Print("Начинаем безобразничать...");

  ОфигеннаяСтруктура штукаРаз = Функа(5);

  Print("Значение штукиРаз = ", штукаРаз.выдатьЗначение());

  ОфигеннаяСтруктура штукаДва;

  Print("Значение штукиДва первое = ", штукаДва.выдатьЗначение());
  штукаДва = Функа(7);
  Print("Значение штукиДва второе = ", штукаДва.выдатьЗначение());

  Print("Заканчиваем безобразничать...");
}

Le résultat de cette opération est le suivant :

23:55:39 Script 1 EURUSDm,H1: loaded successfully
23:55:39 1 EURUSDm,H1: initialized
23:55:39 1 EURUSDm,H1: Начинаем безобразничать...
23:55:39 1 EURUSDm,H1: Значение штукиРаз = 5
23:55:39 1 EURUSDm,H1: Значение штукиДва первое = 0
23:55:39 1 EURUSDm,H1: Значение штукиДва второе = 7
23:55:39 1 EURUSDm,H1: Заканчиваем безобразничать...
23:55:39 1 EURUSDm,H1: uninit reason 0
23:55:39 Script 1 EURUSDm,H1: removed
L'objet thingRaz est initialisé avec l'objet (structure) renvoyé par la fonction Funk, et l'objet thingTwo est initialisé avec la valeur par défaut, mais un objet (structure) lui est ensuite attribué, également renvoyé par la fonction Funk.
 
simpleton:

Est-ce que ça semble être la bonne chose à faire ?

Des identifiants russes ont été utilisés, ce qui lui donne un aspect un peu inhabituel :

Le résultat de cette opération est le suivant :

L'objet thingRaz est initialisé avec l'objet (structure) renvoyé par la fonction Funk, et l'objet thingTwo est initialisé avec la valeur par défaut, mais ensuite un objet (structure), également renvoyé par la fonction Funk, lui est attribué.

 

S'il vous plaît, pouvez-vous commenter en détail la façon dont ce simplet a décrit, chaque ligne, y compris la syntaxe ? Je ne comprends pas encore ce que cela signifie. Pas nécessairement sur les doigts, vous pouvez aussi utiliser des termes, mais ligne par ligne.

1)Alors, la fonction de Funk renvoie-t-elle un objet et non une valeur médiocre, comme le font d'autres fonctions médiocres ? Quel genre de bête est-ce, pourquoi est-ce un objet ?

2) Peut-on initialiser avec un objet retourné par la fonction ou une valeur par défaut ? Autrement dit, la fonction Funk, bien qu'elle fasse partie de la même structure, n'a rien à voir avec l'objet Chose 2, ou est-ce que je comprends mal quelque chose ? D'ailleurs, on l'appelle un objet, donc la structure a aussi un objet ? Je pensais que c'était plus simple que ça. Et une autre question, comment faire exactement pour copier une structure vers une autre, si elles sont du même type ? Cette simple ligne.

ОфигеннаяСтруктура штукаДва;

et il y a une copie notoire ? Et il n'est pas nécessaire de déclarer la structure de Stuka 2 séparément, et ce n'est pas du tout une structure, mais un objet créé par une structure ?

Je ne suis en quelque sorte pas familier avec les langages de programmation (mais pas contre l'apprentissage) et de plus, j'ai une idée assez vague de la POO, donc ne soyez pas surpris si les questions sont stupides.

Oups, je viens de voir que les accolades sont fermées avant, c'est-à-dire que ce Funka est décrit en dehors de la structure, mais qu'en est-il exactement par rapport à la structure Awesome ?

 
Hobu:

S'il vous plaît, pouvez-vous commenter en détail la façon dont ce simplet a décrit, chaque ligne, y compris la syntaxe ? Je ne comprends pas encore ce que cela signifie. Pas nécessairement sur les doigts, vous pouvez aussi utiliser des termes, mais ligne par ligne.

1)Alors, la fonction de Funk renvoie-t-elle un objet et non une valeur médiocre, comme le font d'autres fonctions médiocres ? Quel genre de bête est-ce, pourquoi est-ce un objet ?

2) Peut-on initialiser avec un objet retourné par la fonction ou une valeur par défaut ? Autrement dit, la fonction Funk, bien qu'elle fasse partie de la même structure, n'a rien à voir avec l'objet Chose 2, ou est-ce que je comprends mal quelque chose ? D'ailleurs, on l'appelle un objet, donc la structure a aussi un objet ? Je pensais que c'était plus simple que ça. Et une autre question, comment exactement une structure peut être copiée dans une autre, si elles sont du même type ? Cette simple ligne.

Et il y a la fameuse copie ? Et vous ne devez pas déclarer la structure de type 2 séparément et ce n'est pas du tout une structure, mais un objet créé par une structure ?

Je ne suis pas du tout familier avec un langage de programmation (mais je ne suis pas contre l'apprentissage) et j'ai en outre une idée assez vague de la POO, donc ne soyez pas surpris si les questions sont stupides.

Oups, je viens de voir que les accolades sont fermées avant, c'est-à-dire que cette fonction est décrite en dehors de la structure, mais qu'en est-il exactement par rapport à la structure Awesome ?

Quelque chose comme ça, comparé à la même chose, mais pour une variable d'un des types intégrés :
#property strict

/******************************************************************************/
struct ОфигеннаяСтруктура { // Заводим структуру
private: // Просто так извне к следующим элементам нельзя обратиться
  int значение; // Поле данных для хранения в структуре

public: // К следующим элементам можно просто так обратиться извне
  ОфигеннаяСтруктура(int значение = 0): значение(значение) { } // Конструктор: инициализирует поле значением переданного параметра; если параметр не передан, используется значение по умолчанию, равное 0
  int выдатьЗначение() const { return значение; } // Метод: возвращает значение поля, может вызываться для структур, переменные для которых объявленных как константные
};

/******************************************************************************/
ОфигеннаяСтруктура Функа1(int значение) { // Функция, возвращающая структуру
  ОфигеннаяСтруктура местная(значение); // Создание локальной переменной, в данном случае, судя по типу, это - структура

  // Если структура посложнее, чем в этом примере, то тут можно выполнить над ней какие-то дополнительные действия

  return местная; // Возвращаем структуру из функции
}

/******************************************************************************/
string Функа2(int значение) { // Функция, возвращающая один из встроенных типов
  string Таблица[] = {"Ноль", "Один", "Два"};

  /* Никакого особого смысла тут нет, просто имитация деятельности */
  return Таблица[значение % 3]; // Возвращаем строку из функции (остаток от деления параметра на три словами)
}

/******************************************************************************/
void OnStart() {
  Print("Начинаем безобразничать...");

  ОфигеннаяСтруктура штукаРаз = Функа1(5); // Заводим переменную (структуру) с одновременной инициализацией
  string строкаРаз = Функа2(5); // Заводим переменную (один из встроенных типов) также с инициализацией

  Print("Значение штукиРаз = ", штукаРаз.выдатьЗначение()); // Для получения значения поля структуры вызывается специально под это написанный метод
  Print("Значение строкиРаз = ", строкаРаз);

  ОфигеннаяСтруктура штукаДва; // Заводим переменную (структуру) без явной инициализации (конструктор получает в качестве значения параметра значение, указанное по умолчанию, и структура инициализируется им)
  string строкаДва; // Заводим переменную (один из встроенных типов) без инициализации (переменные типа string, объявленные таким образом, инициализируются пустой строкой)

  Print("Значение штукиДва первое = ", штукаДва.выдатьЗначение());
  Print("Значение строкиРаз первое = '", строкаРаз, "'");

  штукаДва = Функа1(7); // Присвоение переменной штукаДва типа структура значения типа структура, возвращённого функцией Функа1
  строкаДва = Функа2(7); // Присвоение переменной строкаДва одного из встроенных типов (строка) значения того же типа, возвращённого функцией Функа2

  Print("Значение штукиДва второе = ", штукаДва.выдатьЗначение());
  Print("Значение строкиРаз второе = '", строкаРаз, "'");

  Print("Заканчиваем безобразничать...");
}

Le résultat de la course est le suivant :

21:16:29 Script 1 EURUSDm,H1: loaded successfully
21:16:29 1 EURUSDm,H1: initialized
21:16:29 1 EURUSDm,H1: Начинаем безобразничать...
21:16:29 1 EURUSDm,H1: Значение штукиРаз = 5
21:16:29 1 EURUSDm,H1: Значение строкиРаз = Два
21:16:29 1 EURUSDm,H1: Значение штукиДва первое = 0
21:16:29 1 EURUSDm,H1: Значение строкиРаз первое = ''
21:16:29 1 EURUSDm,H1: Значение штукиДва второе = 7
21:16:29 1 EURUSDm,H1: Значение строкиРаз второе = 'Один'
21:16:29 1 EURUSDm,H1: Заканчиваем безобразничать...
21:16:29 1 EURUSDm,H1: uninit reason 0
21:16:29 Script 1 EURUSDm,H1: removed

Les fonctions renvoient des objets du type spécifié dans la déclaration. Par objets, nous entendons ici non seulement les structures, mais aussi les types intégrés.

Si le type de la valeur retournée pour la fonction Funk1 est du type OffigenStructure, qui est une structure, cela signifie que cette fonction retourne les valeurs des structures, et uniquement du type OffigenStructure. Il le fait parce que et seulement parce que sa déclaration/définition a ce type de retour.

Vous pouvez l'initialiser avec cette ou ces valeurs, tout comme le fait l'un des constructeurs. Vous pouvez vous passer des constructeurs, mais leur syntaxe d'initialisation est un peu différente et ils ont leurs propres limites.

Dans ce cas, le constructeur prend une valeur de type int, donc une variable de type OxygenStructure doit être initialisée avec une valeur de type int, ou d'un autre type, mais implicitement cast en int.

Puisque la valeur par défaut est spécifiée pour le paramètre que le constructeur accepte, vous n'avez pas besoin de passer une valeur au constructeur. Le constructeur sera quand même appelé, mais le paramètre par défaut sera utilisé.

Cette chaîne simple n'est qu'une déclaration pour une variable de typeStructure. Il est extrêmement facile de copier des structures du même type les unes dans les autres, tout comme de "copier" les valeurs d'une variable de type intégré. Vous devez assigner une valeur d'une variable à l'autre. Par exemple, "thingRaz = thingTwo ;". Exécutez-le vous-même et imprimez la valeur que la variable shtuRaz est devenue après cette affectation.

Funk1 n'a rien à voir avec les structures de typeOfgenericStructure, sauf qu'il renvoie des valeurs de ce type.

Vous avez besoin d'une formation générale, vous allez vous "noyer" sans elle. Je ne suis pas prêt à te donner des conseils.

Je peux vous donner brièvement les conseils suivants, d'après ce que je vois (l'essentiel) :

1. Les données d'un programme sont stockées dans des zones de mémoire nommées, appelées variables.

2. le type de variable définit un mode d'interprétation des données stockées et, dans la grande majorité des cas, sa taille. Le mode d'interprétation implique un ensemble d'opérations qui peuvent être effectuées sur les données.

3. De ce point de vue, les types incorporés et structurés ne sont pas conceptuellement différents.

Le point 2 est le plus important et le plus fondamental à comprendre. En C++ et MQL, la notion de type est très importante.

En bref, un type est un "modèle" de données, et une variable est une unité de ce modèle. Un chat ou un toutou est un "modèle", et des chats spécifiques comme Murzyk ou des chiens comme Sharik sont des unités de chats et de chiens. Il en va de même pour les types et les variables.

 
Hobu:

S'il vous plaît, pouvez-vous commenter en détail la façon dont ce simplet a décrit, chaque ligne, y compris la syntaxe ? Je ne comprends pas encore ce que cela signifie. Pas nécessairement sur les doigts, vous pouvez aussi utiliser des termes, mais ligne par ligne.

1)Alors, la fonction de Funk renvoie-t-elle un objet et non une valeur médiocre, comme le font d'autres fonctions médiocres ? Quel genre de bête est-ce, pourquoi est-ce un objet ?

2) Peut-on initialiser avec un objet retourné par la fonction ou une valeur par défaut ? Autrement dit, la fonction Funk, bien qu'elle fasse partie de la même structure, n'a rien à voir avec l'objet Chose 2, ou est-ce que je comprends mal quelque chose ? D'ailleurs, on l'appelle un objet, donc la structure a aussi un objet ? Je pensais que c'était plus simple que ça. Et une autre question, comment faire exactement pour copier une structure vers une autre, si elles sont du même type ? Cette simple ligne.

et il y a une copie notoire ? Et il n'est pas nécessaire de déclarer la structure de Stuka 2 séparément, et ce n'est pas du tout une structure, mais un objet créé par une structure ?

Je ne suis en quelque sorte pas familier avec les langages de programmation (mais pas contre l'apprentissage) et de plus, j'ai une idée assez vague de la POO, donc ne soyez pas surpris si les questions sont stupides.

Oups, je viens de voir que les accolades sont fermées avant, c'est-à-dire que ce Funka est décrit en dehors de la structure, mais qu'en est-il exactement par rapport à la structure Awesome ?


Tartu ? Uh-huh...
 

Les anciens, dites-moi comment calculer le nombre de cellules remplies dans un tableau à deux dimensions.

 for(int i=0;i<ObjectsTotal();i++) 
{
  mas[0][i]-количество заполненных ячеек?
  mas[1][i]-//-//-//-//-//-//-//-//-//-
}
 

S'il vous plaît aidez-moi avec le code pour afficher un seul chiffre sur le graphique - le niveau de la perte.

Voilà dans cette extension bon https://www.mql5.com/ru/code/8873 il est et donc il est appelé le niveau de la prune, il est affiché en rouge, bien que aussi le niveau de la marge est un sujet normal mais au moins celui-là pour commencer, sinon, l'extension est cool mais il ya beaucoup de choses que je n'ai pas besoin, et je ne peux pas comprendre comment il est obtenu là.

 
Top2n:

Les anciens, dites-moi comment calculer le nombre de cellules remplies dans un tableau à deux dimensions.


ArrayRange
 
r772ra:

ArrayRange


Cette fonction renvoie le nombre de cellules dans le tableau, et non le nombre de cellules remplies.

Quelqu'un peut-il me dire comment faire du unidimensionnel ?))

Raison: