Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz, hiçbir yerde - 6. - sayfa 634

 

Dize dizisinin öğelerinin alfabetik sıraya göre gruplandığı bir örnek için kod parçası olan var mı?

şimdiden teşekkür ederim.

 
Hobu :

Burada

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

yazılı:

" Basit türler , basit yapılar , nesne işaretçileri döndürebilirsiniz. return ifadesini kullanarak, herhangi bir diziyi, sınıf nesnesini, karmaşık yapı türündeki değişkenleri döndüremezsiniz.

"

Bu ihtiyacın olan şeye benziyor mu?

Rus tanımlayıcıları kullanılıyor, bu yüzden biraz sıra dışı görünüyor:

 #property strict

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

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

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

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

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

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

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

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

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

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

Bunu çalıştırmanın sonucu şudur:

 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
PieceOne nesnesi, Funk işlevinden döndürülen nesne (yapı) ile başlatılır ve parça2 nesnesi varsayılan bir değerle başlatılır, ancak daha sonra Funk işlevinden döndürülen nesneye (yapıya) atanır.
 
simpleton :

Bu ihtiyacın olan şeye benziyor mu?

Rus tanımlayıcıları kullanılıyor, bu yüzden biraz sıra dışı görünüyor:

Bunu çalıştırmanın sonucu şudur:

PieceOne nesnesi, Funk işlevinden döndürülen nesne (yapı) ile başlatılır ve parça2 nesnesi varsayılan bir değerle başlatılır, ancak daha sonra Funk işlevinden döndürülen nesneye (yapıya) atanır.

 

Lütfen, simpleton tarafından açıklanan yöntem hakkında, sözdizimi dahil her satırı hakkında ayrıntılı olarak yorum yapabilir misiniz? Ve hala bunun ne anlama geldiğine dair hiçbir fikrim yok. Mutlaka parmaklarda değil, terimlerle mümkündür, ancak satır satır.

1) Funk işlevi, daha sıradan işlevlerin yaptığı gibi sıradan bir değer değil, tam olarak bir nesne mi döndürüyor? Ne tür bir hayvan yaptığını düşünüyorum, o neden bir nesne?

2) Hem bir işlevden döndürülen bir nesneyle hem de varsayılan bir değerle başlatabilir miyim? Yani Funk işlevi, aynı yapının parçası olmasına rağmen, Thing 2 nesnesiyle ilgisi yok mu yoksa bir şeyi yanlış mı anladım? Bu arada orada nesne mi deniyor yani yapı da bir nesne alıyor mu? Che bir şey bana bir şekilde daha kolay görünüyordu. Ve başka bir soru, eğer aynı tiptelerse bir yapıyı diğerine tam olarak nasıl kopyalayabilirim? İşte bu basit çizgi

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

ve kötü şöhretli kopyalama var mı? Ve Şey 2'nin yapısını ayrı ayrı beyan etmek gerekli değil ve bu hiç bir yapı değil, yapı tarafından yaratılan bir nesne mi?

Bir şekilde herhangi bir programlama dili bilmiyorum (ama öğrenmeyi umursamıyorum) ve dahası, bu yüzden OOP hakkında oldukça belirsiz bir fikrim var, bu yüzden sorular aptalcaysa şaşırmayın.

Oops, orada daha önce küme parantezlerinin kapatıldığını fark ettim, yani bu Funka yapının dışında tanımlanıyor, ama aslında, Muhteşem yapıyla ilgili olarak nasıl bir şey?

 
Hobu :

Lütfen, simpleton tarafından açıklanan yöntem hakkında, sözdizimi dahil her satırı hakkında ayrıntılı olarak yorum yapabilir misiniz? Ve hala bunun ne anlama geldiğine dair hiçbir fikrim yok. Mutlaka parmaklarda değil, terimlerle mümkündür, ancak satır satır.

1) Funk işlevi, daha sıradan işlevlerin yaptığı gibi sıradan bir değer değil, tam olarak bir nesne mi döndürüyor? Ne tür bir hayvan yaptığını düşünüyorum, o neden bir nesne?

2) Hem işlevden döndürülen nesneyle hem de varsayılan değerle başlatabilir miyim? Yani Funk işlevi, aynı yapının parçası olmasına rağmen, Thing 2 nesnesiyle ilgisi yok mu yoksa bir şeyi yanlış mı anladım? Bu arada orada bir nesne mi deniyor yani yapı da bir nesne alıyor mu? Che bir şey bana bir şekilde daha kolay görünüyordu. Ve başka bir soru, eğer aynı tiptelerse, bir yapıyı diğerine tam olarak nasıl kopyalayabilirim? İşte bu basit çizgi

ve kötü şöhretli kopyalama var mı? Ve Şey 2'nin yapısını ayrı ayrı beyan etmek gerekli değil ve bu hiç bir yapı değil, yapı tarafından yaratılan bir nesne mi?

Bir şekilde herhangi bir programlama dili bilmiyorum (ama öğrenmeyi umursamıyorum) ve dahası, bu yüzden OOP hakkında oldukça belirsiz bir fikrim var, bu yüzden sorular aptalcaysa şaşırmayın.

Oops, orada daha önce küme parantezlerinin kapatıldığını fark ettim, yani bu Funka yapının dışında tanımlanıyor, ama aslında, Muhteşem yapıyla ilgili olarak nasıl bir şey?

Bunun gibi bir şey, aynı ile karşılaştırıldığında, ancak yerleşik türlerden birinin değişkeni için:
 #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 ( "Заканчиваем безобразничать..." );
}

Çalıştırmanın sonucu aşağıdaki gibidir:

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

İşlevler, bildirildiğinde belirtilen türdeki nesneleri döndürür. Buradaki nesneler sadece yapıları değil, aynı zamanda yerleşik türleri de ifade eder.

Funka1 işlevi, bir yapı olan dönüş türü olarak AwesomeStructure türüne sahipse, bu, bu işlevin yapıların değerlerini, ayrıca yalnızca AwesomeStructure türünden döndürdüğü anlamına gelir. Bunu tam olarak çünkü ve yalnızca böyle bir dönüş türünün bildiriminde/tanımında belirtilmesi nedeniyle yapar.

Yapıcılardan birinin aldığı aynı değer veya değerlerle başlatılabilir. Yapıcılar olmadan yapabilirsiniz, ancak biraz farklı bir başlatma sözdizimi vardır ve sınırlamalar vardır.

Bu durumda, yapıcı bir int değeri alır, bu nedenle AwesomeStructure türü değişkeni, int türünde bir değerle veya dolaylı olarak int'ye dönüştürülebilir başka bir türle başlatılmalıdır.

Oluşturucunun aldığı parametre varsayılan bir değere sahip olduğundan, yapıcıya bir değer iletmeniz gerekmez. Yapıcı hala çağrılacak, ancak varsayılan parametre kullanılacak.

Bu basit satır, yalnızca iki tür AwesomeStructure olan değişken bir bildirimdir. Aynı türdeki yapıları birbirine kopyalamak son derece kolaydır - tıpkı yerleşik türdeki değişkenlerin değerlerini "kopyalamak" gibi. Bir değişkenin değerini diğerine atamanız gerekir. Örneğin, "parçaBir = parçaİki;". Kendiniz yapın ve bu atamadan sonra parçaZaman değişkeninin aldığı değeri yazdırın.

Funka1'in bu türdeki değerleri döndürmesi dışında, AwesomeStructure türündeki yapılarla hiçbir ilgisi yoktur.

Genel hazırlığa ihtiyacınız var, onsuz "boğulacaksınız". Bir şey tavsiye etmeye hazır değilim.

Kısaca benim gördüklerime göre şunları verebiliriz (en temelleri):

1. Bir programdaki veriler, değişkenler adı verilen adlandırılmış bellek alanlarında depolanır.

2. Değişken türü, saklanan verilerin nasıl yorumlanacağını ve çoğu durumda büyüklüklerini belirler. Bir yorumlama yöntemi, veriler üzerinde gerçekleştirilebilecek bir dizi işlem anlamına gelir.

3. Ankastre ve yapı tipleri bu açıdan kavramsal olarak farklı değildir.

2. Nokta, anlaşılması gereken en önemli ve temel noktadır. C++ ve MQL'de tip kavramı çok önemlidir.

Oldukça pratik: bir tür, verilerin bir "şablonu"dur ve bir değişken, bu şablonun bir birimidir. Bir kedi veya köpek "şablonlardır" ve Murzik gibi belirli kediler veya Sharik gibi köpekler kedi ve köpek birimleridir. Türler ve değişkenler ile aynıdır.

 
Hobu :

Lütfen, simpleton tarafından açıklanan yöntem hakkında, sözdizimi dahil her satırı hakkında ayrıntılı olarak yorum yapabilir misiniz? Ve hala bunun ne anlama geldiğine dair hiçbir fikrim yok. Mutlaka parmaklarda değil, terimlerle mümkündür, ancak satır satır.

1) Funk işlevi, daha sıradan işlevlerin yaptığı gibi sıradan bir değer değil, tam olarak bir nesne mi döndürüyor? Ne tür bir hayvan yaptığını düşünüyorum, o neden bir nesne?

2) Hem bir işlevden döndürülen bir nesneyle hem de varsayılan bir değerle başlatabilir miyim? Yani Funk işlevi, aynı yapının parçası olmasına rağmen, Thing 2 nesnesiyle ilgisi yok mu yoksa bir şeyi yanlış mı anladım? Bu arada orada nesne mi deniyor yani yapı da bir nesne alıyor mu? Che bir şey bana bir şekilde daha kolay görünüyordu. Ve başka bir soru, eğer aynı tiptelerse bir yapıyı diğerine tam olarak nasıl kopyalayabilirim? İşte bu basit çizgi

ve kötü şöhretli kopyalama var mı? Ve Şey 2'nin yapısını ayrı ayrı beyan etmek gerekli değil ve bu hiç bir yapı değil, yapı tarafından yaratılan bir nesne mi?

Bir şekilde herhangi bir programlama dili bilmiyorum (ama öğrenmeyi umursamıyorum) ve dahası, bu yüzden OOP hakkında oldukça belirsiz bir fikrim var, bu yüzden sorular aptalcaysa şaşırmayın.

Oops, orada daha önce küme parantezlerinin kapatıldığını fark ettim, yani bu Funka yapının dışında tanımlanıyor, ama aslında, Muhteşem yapıyla ilgili olarak nasıl bir şey?


Tartu? Tyugu...
 

Yaşlı adamlar, bana iki boyutlu bir dizideki dolu hücrelerin sayısını nasıl sayacağımı söyleyin.

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

Lütfen grafikte sadece bir rakamı, tahliye seviyesini gösteren kod konusunda bana yardım edin. zor değilse.

İşte bu iyi uzantıda https://www.mql5.com/ru/code/8873 buna tahliye seviyesi denir ve denir, marj seviyesi de normal bir konu olmasına rağmen kırmızı olarak görüntülenir, ancak en azından almak için bir başlamak için, aksi takdirde, uzantı harika, ama ihtiyacım olmayan birçok şey var, ama orada nasıl çalıştığını anlayamıyorum.

 
Top2n :

Yaşlı adamlar, bana iki boyutlu bir dizideki dolu hücrelerin sayısını nasıl sayacağımı söyleyin.


dizi aralığı
 


Bu işlev, doldurulmuş hücrelerin değil, dizi hücrelerinin sayısını döndürür.

Birisi bana nasıl tek boyutlu olduğunu söyleyebilir mi?))