es
Feedback
PascalABC.NET официальный канал

PascalABC.NET официальный канал

Ir al canal en Telegram

Официальный канал языка и системы программирования PascalABC.NET

Mostrar más
1 856
Suscriptores
Sin datos24 horas
-147 días
-2330 días
Archivo de publicaciones
Метод ToWords Метод строки ToWords позволяет разбить строку на массив слов. Самое замечательное, что у метода ToWords можно и
Метод ToWords Метод строки ToWords позволяет разбить строку на массив слов. Самое замечательное, что у метода ToWords можно использовать строковый параметр, хранящий разделители слов. Имеется также константа AllDelimiters, которая хранит все возможные разделители слов в тексте. На скриншоте - программа, которая в своём тексте выводит все слова

Символы Unicode В кодировке Unicode - огромное количество интересных символов. Данная простая программа выводит диапазон симв
Символы Unicode В кодировке Unicode - огромное количество интересных символов. Данная простая программа выводит диапазон символов кодовой таблицы в графическое окно.

Генераторы последовательностей и оператор yield Генераторы последовательностей - это функции, которые позволяют генерировать
Генераторы последовательностей и оператор yield Генераторы последовательностей - это функции, которые позволяют генерировать последовательность по заданному алгоритму. В теле такой функции такой функции мы пишем обычный алгоритм, а в местах, где надо вернуть значение, используем специальный оператор yield. Каждый раз, когда необходимо вернуть значение, такая функция запоминает значения всех локальных переменных и выполняет оператор yield. Когда требуется следующее значение, функция продолжает работу с сохраненной точки. Нетрудно видеть, что такая функция не запоминает всю последовательность, а возвращает лишь текущее значение. Таким образом, последовательность вычисляется всякий раз при вызове функции-генератора. Это дольше по времени, но сильно экономит память. На слайде - генератор арифметической прогрессии и цикл foreach по возвращаемой последовательности.

Linq и распараллеливание Интегрированный язык запросов хорош тем, что разделяет задачу на части - каждая подзадача решается м
Linq и распараллеливание Интегрированный язык запросов хорош тем, что разделяет задачу на части - каждая подзадача решается методом с понятным именем и понятными параметрами. Но самое интересное - в том, что такое решение можно легко модифицировать, добавив в цепочку методов еще один или несколько. В данном примере иллюстрируется задача вычисления количества простых чисел, меньших n. Добавление в цепочку методов метода AsParallel позволяет распараллелить решение. На шестиядерном процессоре оно ускоряется примерно в 5.5 раз.

case по строкам В PascalABC.NET возможен case по строкам. Эта мощная возможность недооценивается. Но: в Питоне вообще нет под
case по строкам В PascalABC.NET возможен case по строкам. Эта мощная возможность недооценивается. Но: в Питоне вообще нет подобного оператора, а в C++ аналогичный оператор switch не умеет работать со строками. На скриншоте - программа для школьников: уровень спецагента в зависимости от имени.

Трехмерная модель вращения Солнце-Земля-Луна Пожалуй, самым эффектным модулем в PascalABC.NET является модуль трёхмерной граф
Трехмерная модель вращения Солнце-Земля-Луна Пожалуй, самым эффектным модулем в PascalABC.NET является модуль трёхмерной графики Graph3D. И пожалуй, самым эффектным примером иллюстрации возможностей Graph3D является стандартный пример PlanetsRotate. В этом примере - все преимущества модуля трёхмерной графики: материалы, текстуры, дочерние элементы, вложенные алгоритмические анимации и их модификаторы, параметрические трёхмерные траектории и анимация на основе кадра, абсолютные и относительные координаты. И всё это - 27 строк кода!

Фигура с дыркой В GraphWPF можно рисовать сложные фигуры. Для этого используется процедура FastDraw, параметром которой являе
Фигура с дыркой В GraphWPF можно рисовать сложные фигуры. Для этого используется процедура FastDraw, параметром которой является другая процедура, у которой тоже есть параметр типа DrawingContext. В контексте рисования dc можно нарисовать сложную геометрию, используя в частности операцию вычитания одной фигуры из другой. На скриншоте - треугольник, из которого мы вычли три круга.

Декораторы процедур Декоратор процедуры - это процедура, которая делает то же, что и основная, но добавляет какие-то действия
Декораторы процедур Декоратор процедуры - это процедура, которая делает то же, что и основная, но добавляет какие-то действия до и после основной процедуры. Декораторы придают действиям новые свойства (декорируют их). В PascalABC.NET декоратор можно реализовать как функцию, которая принимает процедуру как параметр, а возвращает отдекорированную процедуру. Основная строка в данном коде - это декорирование:
 p := pdecorated(p)

Вычисление выражения в польской инверсной записи (ПОЛИЗ) Обратная польская запись https://ru.wikipedia.org/wiki/Обратная_поль
Вычисление выражения в польской инверсной записи (ПОЛИЗ) Обратная польская запись https://ru.wikipedia.org/wiki/Обратная_польская_запись позволяет записать выражение без скобок. Знак операции записывается после операндов:
 5 2 *
Вычисление заключается в применении операции к двум предыдущим операндам и замене выражения на результат:
10
Для вычисления выражения в ПОЛИЗ используется стек операндов и простой стековый алгоритм.

Комбинаторика и LINQ Стрим Алексея Богданова сегодня в 16.00. https://www.youtube.com/watch?v=940ybfJUIo8

Принцип подстановки Принцип подстановки - важнейший в программировании. В любой алгоритм вместо объекта некоторого типа можно
Принцип подстановки Принцип подстановки - важнейший в программировании. В любой алгоритм вместо объекта некоторого типа можно подставить любую разновидность этого объекта - и код будет работать без изменений. В данном коде мы используем принцип подстановки так: массивы и списки являются разновидностями последовательностей - поэтому в любой алгоритм, где используются последовательности, можно подставить массив или список. Придумала принцип подстановки Барбара Лисков - американский ученый в области информатики: h ttps://ru.wikipedia.org/wiki/Лисков,_Барбара Ей сейчас 83 года - она по-прежнему занимается исследованиями и выступает на научных конференциях

Как в одной ячейке памяти совместить значения разных типов В .NET можно сделать аналог union-типа в C. Этот тип должен быть з
Как в одной ячейке памяти совместить значения разных типов В .NET можно сделать аналог union-типа в C. Этот тип должен быть записью с атрибутом StructLayout(LayoutKind.Explicit). Кроме этого, у каждого поля записи необходимо указать атрибут, задающий сдвиг относительно начала записи. Для наших целей для каждого поля сдвиг равен 0. В данном примере r.r и r.i разделяют одну память, а а ячейка типа Rec занимает 8 байт - по размеру максимального поля.

Игра Пятнашки Игра Пятнашки, написанная группой школьников за час

Зачем нужен & Если необходимо указать явно имя типа обобщенной функции, то надо использовать & перед открывающей угло
Зачем нужен & Если необходимо указать явно имя типа обобщенной функции, то надо использовать & перед открывающей угловой скобкой:
 Seq&<real>(1)
Поему? Да потому что компилятор будет трактовать < как операцию меньше. И будет прав! На изображении вы видите, как компилятор верно! трактует запись
Seq<boolean>(true) 
Но вовсе не так как вы думали :)

С помощью PlotWPF можно создавать треугольники и другие плоские фигуры. На базе этого можно реализовать хорошую библиотеку дл
С помощью PlotWPF можно создавать треугольники и другие плоские фигуры. На базе этого можно реализовать хорошую библиотеку для отображения плоских геометрических объектов и их характеристик: медианы, высоты и т.д. Какие проблемы сразу бросаются в глаза? 1. Передавать два массива для создания треугольника неудобно 2. Массив целых точек хотелось бы преобразовывать в массив вещественных точек как-то просто. 3. Для того чтобы линия была замкнутой приходится первую точку добавлять в конец - как автоматизировать? 4. Нужно ли управление мышью подобъектами на экране? Пишите в комментариях идеи для такой библиотеки.

Превращение матрицы в массив массивов и наоборот Матрицу array [,] of T можно превратить в массив массивов array of array of
Превращение матрицы в массив массивов и наоборот Матрицу array [,] of T можно превратить в массив массивов array of array of T. Для этого есть два метода: a.Rows - массив строк и a.Cols - массив столбцов. После этого строки или столбцы можно преобразовать и превратить всё назад в матрицу, используя стандартные процедуры MatrByRow(a) или MatrByCol(a). На слайде представлен пример, в котором матрица вначале преобразуется в массив строк, после этого каждая строка сортируется по возрастанию и мы полученный массив строк вновь превращаем в матрицу. Для преобразования каждой строки используется метод Select.

Как организовать цикл по строкам текстового файла В PascalABC.NET текстовые файлы имеют свойство Lines, которое возвращает по
Как организовать цикл по строкам текстового файла В PascalABC.NET текстовые файлы имеют свойство Lines, которое возвращает последовательность строк текстового файла. Поэтому легко пройтись по текстовому файлу с помощью цикла foreach. Для открытия текстового файла используется функция OpenRead, а для закрытия - метод f.Close.

Как организовать цикл по строкам текстового файла

Русские слова в программах В PascalABC.NET в качестве идентификаторов можно использовать русские имена. Это затрудняет написа
Русские слова в программах В PascalABC.NET в качестве идентификаторов можно использовать русские имена. Это затрудняет написание программы, но повышает её читаемость. В стандартных примерах PascalABC.NET имеется папка Русские исполнители - здесь приводится одна из программ. Все имена в программе - русские. Даже параметры лямбд. В подсказках также - исключительно русский язык. На наш взгляд, для примеров это - идеальный способ донести идею до начинающих.