PascalABC.NET официальный канал
1.86K subscribers
536 photos
1 video
9 files
376 links
Официальный канал языка и системы программирования PascalABC.NET
Download Telegram
Обзор роликов на youtube. Молодые старики

За последний месяц на youtube появилось не так много появилось статей с тегом PascalABC.NET.

Вот одна характерная: https://www.youtube.com/watch?v=tF6H2zQx1ts

Порекламируем канал молодого репетитора :)

Но что мы видим? Показ программы вычисления дискриминанта в среде PascalABC.NET на дремучем Паскале 70-х годов. Ни тебе автовывода типов, ни тебе внутриблочных описаний. Даже кортежей - и тех нет!

И - вывод - на скриншоте о том, что язык Паскаль - для людей за 40+.

Вывод. Полностью отсутствует попытка разобраться, что такое PascalABC.NET.
👻5
Shuffle - перемешиваем колоду карт

Данная программа иллюстрирует создание и перемешивание колоды карт. Для создания используется метод Cartesian, для перемешивания - внешняя функция Shuffle, которая пришла из стандартной библиотеки C++.
👍11
Перемешиваем карты - Unicode-символы

begin
var bb := Encoding.Unicode.GetBytes('🂡');
var Cards := LstStr;
for var i := 0 to 4*16-1 do
begin
var s := Encoding.Unicode.GetString(bb);
if i mod 16 not in |11,14,15| then
Cards += s;
bb[2] += 1;
end;
Cards.Println;
Println;
Shuffle(Cards);
Cards.Println;
end.


В данной программе будем представлять игральные карты Unicode-символами. Основная сложность здесь - то, что игральная карта кодируется двумя Unicode-символами. Поэтому преобразуем ее вначале в последовательность байт, затем будем увеличивать нужный байт на 1 и назад потом преобразуем в строку.

Из полученной последовательности выбросим некоторые Unicode-символы, не являющиеся изображениями карт.

И потом перетасуем нашу колоду, вызвав процедуру Shuffle для списка!
ToArray для кортежей

В выпуске 3.9.0.3338 появился метод расширения ToArray для кортежей элементов одного типа

#новое
👍8
Вырезание подматрицы из матрицы

Срезы позволяют вырезать подматрицу из матрицы
👍4
SelectMany как операция, обратная группировке

Если произвести группировку по какому-то полю, то мы получим иерархический набор данных, разбитых по группам.

Чтобы вернуться назад к линейным данным - используем SelectMany. Этот метод сцепляет последовательности из каждой группы в единую плоскую последовательность.

В результате после GroupBy и SelectMany получаем исходную последовательность с измененным порядком элементов.
👍8
Полиморфные массивы и фильтрация по типу

В следующем примере создается массив разнородных объектов.

Чтобы эти объекты сосуществовали в одном массиве, тип элементов массива должен быть object - предок всех типов.

Затем можно отфильтровать по типу с помощью OfType и обрабатывать уже только элементы данного типа. Приятно, что после OfType мы получаем последовательность элементов ровно того типа, который указан в OfType.

Поэтому отфильтрованные вещественные можно например просуммировать

#PascalABC.NET
👍3🤔1
Astra Linux - недопущение новых возможностей PascalABC.NET

Продолжаем обзор интернета с упоминанием PascalABC.NET

Удивительное описание современной версии PascalABC.NET находим на портале Easy Astra (см. скрин). Свежее, красивое, добротно сделанное.

Удивительное потому что вообще не упоминается то, что было после Delphi. И код на скриншоте, сделанный очевидно специалистом, он как бы передает привет из далёких 70-х.
🤬5👍1
Определяем все методы строки рефлексией

Каждый тип имеет метод GetMethods, возвращающий все его методы. Чтобы выдать их в стиле Паскаля, приходится немного попреобразовывать параметры и воспользоваться стандартной функцией TypeToTypeName.
👍1
Новая книга Валерия Рубанцева

Валерий Рубанцев опубликовал свою новую замечательную книгу "Компьютерная графика на занимательных примерах": https://forum.mmcs.sfedu.ru/t/chere-puh-i-vse-vse-vse/4126/56
и сопроводил пост напутствием: "Кто качает, тот не подкачает!"

Прямые ссылки:
книга: https://disk.yandex.ru/i/nSzSBrLI1IsyIA
тексты программ: https://disk.yandex.ru/d/V7lrWiabmOZ8Vw
5👏3
Бесконечная последовательность чисел Фибоначчи

Реализуем генератор бесконечной последовательности чисел Фибоначчи с помощью оператора yield
1
Корутины

С помощью функций, генераторов последовательностей можно организовывать выполнение простых сопроцедур (корутин).

На скрине - корутина q и корутина p последовательно выполняют действия между операторами yield. В данном случае оператор yield играет роль паузы после выполнения Movenext, а его возвращаемое значение игнорируется.
👍3🤯1
One-Liners в PascalABC.NET

One-Liners - это программы из одной строки, делающие что-то полезное.
Термин введен популяризаторами Python чтобы подчеркнуть, какой Python замечательный и компактный язык.

В курсе "Основы программирования" мы также идем по этой скользкой дорожке и демонстрируем некоторые One-Liners на языке PascalABC.NET

Предлагаем читателям опубликовать свои интересные One-Liners
👍3
Знаковое событие - встраивание Python в Excel

По-существу Python давно выполняет многие задачи автоматизации лучше VBA. И вот теперь Mocrosoft приняла решение. Учитывая отличные библиотеки Python для визуализации графиков это - знаковое событие.

https://www.ixbt.com/news/2023/08/22/microsoft-python-excel.html
Операция in для проверки попадания точки в область

На скриншоте - программа, которая позволяет штатными средствами PascalABC.NET проверить попадание целочисленной точки в прямоугольник с целыми координатами вершин
2👍2
Работающие гиперссылки в окне вывода

В новой версии PascalABC.NET (скачайте!) можно вывести гиперссылку в окно вывода - и при нажатии на нее в браузере откроется соответствующая страница. Это можно использовать например для теоретических пояснений к урокам.

Пример такого подхода содержится в уроке с легковесными проверяемыми заданиями: при запуске программы Введение в окно вывода выводится гиперссылка для изучения нужного материала.

#новое
👍4
Что легко сделать в PascalABC.NET и очень трудно в C#

Много раз приходится слышать, что если язык разработан под .NET, то зачем? есть ведь C#!

Однако это утверждение не выдерживает критики. При реализации PascalABC.NET было сделано многое, что есть в стандартном Паскале и что приходилось с большими трудностями моделировать средствами .NET. Было также реализовано многое, чего нет в стандартном Паскале и нет в .NET.

Об одной очевидно простой задаче мы сейчас и поговорим. Этоу задачу решают на PascalABC.NET все начинающие буквально с первого занятия. А профессионалу на C# потребуется время и умственные усилия чтобы написать код для её решения.

Итак, задача. Дано 10 целых, которые мы вводим с клавиатуры. С ними надо что=то сделать - например, найти сумму. Целые могут вводиться по нескольку на строке, разделяясь пробелами, а могут - на разных строках, разделяясь нажатием Enter. После десяти целых в программе еще что то может вводиться - к этому надо быть готовым.

Решение на PascalABC.NET - на скриншоте.
👍4
Явное указание типа при описании - текст из учебника

Приближается 1 сентября. Публикуем пункт о явном указании типа при описании переменной из учебника для учеников компьютерной школы мехмата ЮФУ.

Типы - дело непростое, и на начальных занятиях мы в программах используем стиль var sum := 0. Но приходит время - и мы начинаем говорить о явном указании типов. Заодно ругаем старый Паскаль - куда ж без этого )

#начинающим
#учителям
С 1 сентября!

Поздравляем всех учителей и преподавателей с началом учебного года!

В нашем канале мы рассматриваем применение PascalABC.NET как первого языка программирования. Мы специально разрабатывали наш язык для обучения современному программированию. Это - молодой язык, он активно развивается с 2015 года и содержит лучшие средства современного программирования и огромное количество библиотек.

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

Успехов преподавателям и их ученикам в новом учебном году!
6👍5😭1
Правила присваивания для типов

Продолжаем публикацию новых материалов для начинающих.

Что такое типы - важнейшая тема, с которой сталкиваются начинающие. На первых занятиях обычно используется автовыведение типа sum := 0, так что задумываться о типах не надо. Но немного позже говорить о типах обязательно. И первый камень преткновения - присваивание значений переменным разных типов.

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

#начинающим
#учителям