Ошибки в папке Samples и Справке

@developer46 то что вы делаете - это прекрасно. Но мне кажется - это всё тут просто потеряется. Сделайте лучше пулл-реквест на гитхабе. Я могу объяснить всё в подробностях + у гитхаба - прекрасные туториалы.

Нет, не потеряется. Мы это всё отслеживаем. От пулл реквеста конечно не откажемся

@admin На странице pascalabcnet.github.io в разделе информации для учителей заметил опечатку: var x вместо var i.

3. Цикл foreach по индексам

foreach var x in a.Indices do
  a[i] += 2;

Еще чуть ниже по тексту:

Здесь следует обратить внимание, что этот алгоритм может быть легко модифицирован в алгоритм нахождения суммы элементов по условию: например, всех чётных элементов:

begin
  var a := ArrRandomInteger(10);
  a.Println; 
  var sum := 0;
  foreach var x in a do
    if x.IsEven then
      sum += x;
  Print(sum);    
end.

Мне кажется, в данном контексте корректнее было бы использовать формулировку “всех чётных значений элементов”.

Опечатку исправил.

Слово “значение” добавлять бы не стал - это излишнее усложнение фразы. Погуглил - очень часто говорят “Чётные элементы массива”

“Чётные элементы массива” можно понять как эл-ты массива с четными номерами (индексами). Там, кстати, ниже идет именно такой пример, но иначе сформулированный.

Возможно это только ограниченная часть интернета, которую видел я, но когда говорят “элементы массива”, не добавляя слово “индексы” или “значения” - всегда имеют в виду значения. Ну, не считая случая с контекстом из предыдущего предложения в том же абзаце.

Я вот школьникам собираюсь так излагать:

В задачах, связанных с индексами массивов очень важно определить, о чем идет речь – о номере элемента или о его индексе в массиве. Лишь для статического массива с нижней границей, равной 1, этой проблемы не существует. Но если массив динамический, а в задаче предлагается определить, какой из элементов массива имеет максимальное значение, что имеется в виду? Какой элемент по порядку или с каким индексом?

Я понимаю, что описанное несколько не в поднятую тему, но это еще один аспект нечеткой постановки вопроса, когда речь идет о школьных задачах, зачастую ориентированных на статические массивы. Формулировка по типу “Найти сумму нечетных элементов последовательности” ближе к пониманию нечетных по значению, поскольку в последовательностях намного реже спрашивают о номерах элементов. “Найти сумму нечетных элементов массива”, как и “Найти сумму нечетных элементов” - эта фраза несет неоднозначность и я бы не стал ее рекомендовать в таком виде в заданиях.

2 лайка

Полностью согласен. Только в приведенной вами цитате (видимо, из книги) я бы уточнил первое предложение (там, кстати, еще запятая пропущена):

В задачах, связанных с индексами массивов[,] очень важно определить, о чем идет речь – о порядковом номере элемента или о его индексе в массиве.

1 лайк

Это будущая книга, текст сырой, невычитанный. Спасибо за поправки.

У меня такой проблемы при изложении нет. Я говорю “элемент и его индекс” - и становится понятно, что элемент - это уж точно не его индекс.

Это как Иванов и его номер в очереди. Странно говорить “Значение фамилии Иванова” - обычно всё же говорят “Иванов”

1 лайк

Ну зачем утрировать? Я не говорил о чьих-то проблемах при изложении вообще, а всего лишь обратил ваше внимание на некоторую, на мой взгляд, неоднозначность конкретной формулировки в конкретном контексте. Впрочем, дело ваше, я дальше настаивать не собираюсь.

Извините, если обидел - хотел образный пример привести. Ну, я бы всё-таки менять не стал. Спасибо.

Код из примера LINQ // Первые 3 минимума

begin
  SeqRandom(20).Println.Sorted.Distinct.Take(3).Println;
end.

Не корректно в данном случае использовать SeqRandom лучше ArrRandom ?

SeqRandom использовать можно, если устраивает, что выведены будут одни числа, а на сортировку пойдут совсем другие.

а смысл примера тогда?

Вы какие-то ну очень суровые вопросы задаете ))

А где вы взяли этот пример?

C:\PABCWork.NET\Samples\LINQ\First3Min.pas

А, так с этого надо было начинать!

@Admin в этом примере надо, как минимум, заменить SeqRandom на ArrRandom.

А вообще лучше так:

// Первые 3 минимума
## ArrRandom(20).Println.Distinct.Order.Take(3).Println;

Обратите внимание - сортировка после .Distinct, чтоб сортировать меньше элементов.

Может лучше Distinct после сортировки? Чтобы Distinct поменьше элементов? Сортировка-то она быстрая )

1 лайк