М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
Аня199823
Аня199823
18.08.2022 14:35 •  Информатика

Что такое linq? для чего нужно и как им правильно пользоваться? на примере pascalabc.net. подробно опишите функций типа where, select,aggregate и т.д максимум .

👇
Ответ:
san4ez77
san4ez77
18.08.2022
LINQ - технология доступа к данным, разработанная Microsoft для среды .NET. Первоначально применялась при работе с базами данных, позднее была обобщена, позволяя работать с объектами программного кода (LINQ to Objects).
В PascalABC.NET 3.х на базе LINQ to Objects реализованы элементы функционального программирования, для понимания работы которых нужно быть знакомым с "лямбдами" - λ-выражениями, λ-функциями и λ-процедурами. Эти элементы могут применяться к объектам программы, которые поддерживают интерфейс IEnumerable из .NET Framework. Говоря проще, к массивам, спискам, стекам, очередям, словарям - любым динамическим объектам, реализованным на базе последовательностей. И, конечно же, к самим последовательностям.
Последовательность - это новшество для Паскаля, пришедшее из функционального программирования. Главная особенность последовательности в том, что она не хранится в памяти. Вместо этого хранятся а) программный код, позволяющий вычислить любой элемент последовательности и б) значение текущего элемента последовательности, с которым производится операция. Это позволяет работать с последовательностями любой длины, в том числе, с бесконечными. Операторы LINQ обрабатывают входные данные и на выходе всегда возвращают последовательность. Многие начинающие программисты забывают об этом, что порождает ошибки, временами, с маловразумительной диагностикой.
В PascalABC.NET 3.x операции LINQ реализованы в виде расширений соответствующих классов, поэтому в записи используется "точечная форма".
В функциональном программировании имеются, в частности, операции проекция, фильтрация и свертка. С их можно просто и наглядно решать достаточно широкий круг задач.
Фильтрация Where, примененная к последовательности, пропускает на выход лишь элементы, удовлетворяющие заданному условию (для которых это условие истинно). Условие задается в виде лямбды.
Например, a.Where(t->(t>0) and t.IsOdd) породит последовательность из положительных нечетных элементов а (a - массив и т.д.).
Проекция Select, примененная к последовательности, преобразует каждый ее элемент к значению по правилу, заданному "лямбдой".
Например, a.Select(t->3*sin(t)+5*Cos(2*t)) породит последовательность, каждый член которой будет вычислен как значение функции  f(x)=3Sin(x)+5Cos(2x).
Свертка Aggregate заменяет оператор цикла, сворачивая последовательность до одного значения. Это разного рода суммы, произведения и т.п. В простейшем случае используются два параметра, первый из которых определяет начальное значение, а второй является лямбдой, задающий операцию между предыдущим и текущим значениями.
a.Aggregate(1,(x,y)->x*y) свернет элементы a в произведение,
a.Aggregate(0,(x,y)->x+y) свернет элементы a в сумму.

Кроме трех упомянутых операций, LINQ предоставляет также разбиение, объединение, конкатенацию, группировку, упорядочивание и прочее.
"Точечная" нотация PascalABC.NET 3.x позволяет стоить из операций длинные цепочки, что повышает эффективность программ из-за отсутствия промежуточных переменных.
Пример:
SeqGen(15,i->3*i*i-5,10).Where(t->t.IsEven).Select(t->t/10).OrderBy(t->t).Println;
Здесь генерируется последовательность из 15 элементов по формуле
a = 3i²-5, где i=10,11,12,.. Полученная последовательность фильтруется по правилу, пропускающему только элементы с четными значениями. Результат проецируется на последовательность вещественных элементов путем деления каждого исходного элемента на 10. Полученная последовательность упорядочивается по возрастанию и выводится на монитор: 35.8 50.2 67 86.2 107.8 131.8 158.2
4,7(86 оценок)
Открыть все ответы
Ответ:
Rusena
Rusena
18.08.2022
Самый простой вариант - подсчитать сумму четных и нечётных через цикл, в котором берём остатки от деления. Можно начать с конца и соответственно начать подсчитывать сумму только от первого числа с конца не равного 0. Подсчитываем через целочисленное деление на круглое число и нахождение остатка при деление на один. Данные, чередуя, прибавляем к разным переменным(пусть будут x1 и x2). Затем проверяем остаток от деления одной переменной на другую. Если 0 - "Yes", иначе - "No" For i=5 downto 1 do If i Mod 2 = 1 then a:= a+n div (10^(i-1)) mod 10 Else B=B+ div (10^(i-1)) mod 10;
4,7(70 оценок)
Ответ:
salavatshakiro
salavatshakiro
18.08.2022

Объяснение:

def amount(a, b):

   if b > 0:

       a += 1

       b -= 1

       return summ(a, b)

   else:

       return a

n = int(input())

m = int(input())

print(summ(m, n))

Сначала проверяется условие b > 0. Это базовый случай, то есть случай, когда рекурсия заканчивается. Потом идёт присваивание первому числу единицы, а из b она вычитается. Прибавление единицы числу a будет ровно b раз, то есть к числу а прибавится значение числа b. И когда уже b равно нулю, то происходит выход из рекурсии, и функция возвращает число a, то есть сумму чисел a и b.

Програмка не работает с отрицательными числами, мне лень думать :3

4,4(49 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ