Обзор роликов на youtube. Молодые старики
За последний месяц на youtube появилось не так много появилось статей с тегом PascalABC.NET.
Вот одна характерная: https://www.youtube.com/watch?v=tF6H2zQx1ts
Порекламируем канал молодого репетитора :)
Но что мы видим? Показ программы вычисления дискриминанта в среде PascalABC.NET на дремучем Паскале 70-х годов. Ни тебе автовывода типов, ни тебе внутриблочных описаний. Даже кортежей - и тех нет!
И - вывод - на скриншоте о том, что язык Паскаль - для людей за 40+.
Вывод. Полностью отсутствует попытка разобраться, что такое PascalABC.NET.
За последний месяц на youtube появилось не так много появилось статей с тегом PascalABC.NET.
Вот одна характерная: https://www.youtube.com/watch?v=tF6H2zQx1ts
Порекламируем канал молодого репетитора :)
Но что мы видим? Показ программы вычисления дискриминанта в среде PascalABC.NET на дремучем Паскале 70-х годов. Ни тебе автовывода типов, ни тебе внутриблочных описаний. Даже кортежей - и тех нет!
И - вывод - на скриншоте о том, что язык Паскаль - для людей за 40+.
Вывод. Полностью отсутствует попытка разобраться, что такое PascalABC.NET.
👻5
Перемешиваем карты - Unicode-символы
В данной программе будем представлять игральные карты Unicode-символами. Основная сложность здесь - то, что игральная карта кодируется двумя Unicode-символами. Поэтому преобразуем ее вначале в последовательность байт, затем будем увеличивать нужный байт на 1 и назад потом преобразуем в строку.
Из полученной последовательности выбросим некоторые Unicode-символы, не являющиеся изображениями карт.
И потом перетасуем нашу колоду, вызвав процедуру Shuffle для списка!
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 для кортежей элементов одного типа
#новое
В выпуске 3.9.0.3338 появился метод расширения ToArray для кортежей элементов одного типа
#новое
👍8
SelectMany как операция, обратная группировке
Если произвести группировку по какому-то полю, то мы получим иерархический набор данных, разбитых по группам.
Чтобы вернуться назад к линейным данным - используем SelectMany. Этот метод сцепляет последовательности из каждой группы в единую плоскую последовательность.
В результате после GroupBy и SelectMany получаем исходную последовательность с измененным порядком элементов.
Если произвести группировку по какому-то полю, то мы получим иерархический набор данных, разбитых по группам.
Чтобы вернуться назад к линейным данным - используем SelectMany. Этот метод сцепляет последовательности из каждой группы в единую плоскую последовательность.
В результате после GroupBy и SelectMany получаем исходную последовательность с измененным порядком элементов.
👍8
Полиморфные массивы и фильтрация по типу
В следующем примере создается массив разнородных объектов.
Чтобы эти объекты сосуществовали в одном массиве, тип элементов массива должен быть object - предок всех типов.
Затем можно отфильтровать по типу с помощью OfType и обрабатывать уже только элементы данного типа. Приятно, что после OfType мы получаем последовательность элементов ровно того типа, который указан в OfType.
Поэтому отфильтрованные вещественные можно например просуммировать
#PascalABC.NET
В следующем примере создается массив разнородных объектов.
Чтобы эти объекты сосуществовали в одном массиве, тип элементов массива должен быть object - предок всех типов.
Затем можно отфильтровать по типу с помощью OfType и обрабатывать уже только элементы данного типа. Приятно, что после OfType мы получаем последовательность элементов ровно того типа, который указан в OfType.
Поэтому отфильтрованные вещественные можно например просуммировать
#PascalABC.NET
👍3🤔1
Astra Linux - недопущение новых возможностей PascalABC.NET
Продолжаем обзор интернета с упоминанием PascalABC.NET
Удивительное описание современной версии PascalABC.NET находим на портале Easy Astra (см. скрин). Свежее, красивое, добротно сделанное.
Удивительное потому что вообще не упоминается то, что было после Delphi. И код на скриншоте, сделанный очевидно специалистом, он как бы передает привет из далёких 70-х.
Продолжаем обзор интернета с упоминанием PascalABC.NET
Удивительное описание современной версии PascalABC.NET находим на портале Easy Astra (см. скрин). Свежее, красивое, добротно сделанное.
Удивительное потому что вообще не упоминается то, что было после Delphi. И код на скриншоте, сделанный очевидно специалистом, он как бы передает привет из далёких 70-х.
🤬5👍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
Валерий Рубанцев опубликовал свою новую замечательную книгу "Компьютерная графика на занимательных примерах": 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
Корутины
С помощью функций, генераторов последовательностей можно организовывать выполнение простых сопроцедур (корутин).
На скрине - корутина q и корутина p последовательно выполняют действия между операторами yield. В данном случае оператор yield играет роль паузы после выполнения Movenext, а его возвращаемое значение игнорируется.
С помощью функций, генераторов последовательностей можно организовывать выполнение простых сопроцедур (корутин).
На скрине - корутина q и корутина p последовательно выполняют действия между операторами yield. В данном случае оператор yield играет роль паузы после выполнения Movenext, а его возвращаемое значение игнорируется.
👍3🤯1
One-Liners в PascalABC.NET
One-Liners - это программы из одной строки, делающие что-то полезное.
Термин введен популяризаторами Python чтобы подчеркнуть, какой Python замечательный и компактный язык.
В курсе "Основы программирования" мы также идем по этой скользкой дорожке и демонстрируем некоторые One-Liners на языке PascalABC.NET
Предлагаем читателям опубликовать свои интересные One-Liners
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
По-существу Python давно выполняет многие задачи автоматизации лучше VBA. И вот теперь Mocrosoft приняла решение. Учитывая отличные библиотеки Python для визуализации графиков это - знаковое событие.
https://www.ixbt.com/news/2023/08/22/microsoft-python-excel.html
iXBT.com
Microsoft встроила Python в Excel
Microsoft интегрировала популярный язык программирования Python в Excel. Новая возможность уже доступна для тестирования, при этом никакое дополнительное ПО устанавливать не нужно.
Операция in для проверки попадания точки в область
На скриншоте - программа, которая позволяет штатными средствами PascalABC.NET проверить попадание целочисленной точки в прямоугольник с целыми координатами вершин
На скриншоте - программа, которая позволяет штатными средствами PascalABC.NET проверить попадание целочисленной точки в прямоугольник с целыми координатами вершин
❤2👍2
Работающие гиперссылки в окне вывода
В новой версии PascalABC.NET (скачайте!) можно вывести гиперссылку в окно вывода - и при нажатии на нее в браузере откроется соответствующая страница. Это можно использовать например для теоретических пояснений к урокам.
Пример такого подхода содержится в уроке с легковесными проверяемыми заданиями: при запуске программы Введение в окно вывода выводится гиперссылка для изучения нужного материала.
#новое
В новой версии PascalABC.NET (скачайте!) можно вывести гиперссылку в окно вывода - и при нажатии на нее в браузере откроется соответствующая страница. Это можно использовать например для теоретических пояснений к урокам.
Пример такого подхода содержится в уроке с легковесными проверяемыми заданиями: при запуске программы Введение в окно вывода выводится гиперссылка для изучения нужного материала.
#новое
👍4
Что легко сделать в PascalABC.NET и очень трудно в C#
Много раз приходится слышать, что если язык разработан под .NET, то зачем? есть ведь C#!
Однако это утверждение не выдерживает критики. При реализации PascalABC.NET было сделано многое, что есть в стандартном Паскале и что приходилось с большими трудностями моделировать средствами .NET. Было также реализовано многое, чего нет в стандартном Паскале и нет в .NET.
Об одной очевидно простой задаче мы сейчас и поговорим. Этоу задачу решают на PascalABC.NET все начинающие буквально с первого занятия. А профессионалу на C# потребуется время и умственные усилия чтобы написать код для её решения.
Итак, задача. Дано 10 целых, которые мы вводим с клавиатуры. С ними надо что=то сделать - например, найти сумму. Целые могут вводиться по нескольку на строке, разделяясь пробелами, а могут - на разных строках, разделяясь нажатием Enter. После десяти целых в программе еще что то может вводиться - к этому надо быть готовым.
Решение на PascalABC.NET - на скриншоте.
Много раз приходится слышать, что если язык разработан под .NET, то зачем? есть ведь C#!
Однако это утверждение не выдерживает критики. При реализации PascalABC.NET было сделано многое, что есть в стандартном Паскале и что приходилось с большими трудностями моделировать средствами .NET. Было также реализовано многое, чего нет в стандартном Паскале и нет в .NET.
Об одной очевидно простой задаче мы сейчас и поговорим. Этоу задачу решают на PascalABC.NET все начинающие буквально с первого занятия. А профессионалу на C# потребуется время и умственные усилия чтобы написать код для её решения.
Итак, задача. Дано 10 целых, которые мы вводим с клавиатуры. С ними надо что=то сделать - например, найти сумму. Целые могут вводиться по нескольку на строке, разделяясь пробелами, а могут - на разных строках, разделяясь нажатием Enter. После десяти целых в программе еще что то может вводиться - к этому надо быть готовым.
Решение на PascalABC.NET - на скриншоте.
👍4
Явное указание типа при описании - текст из учебника
Приближается 1 сентября. Публикуем пункт о явном указании типа при описании переменной из учебника для учеников компьютерной школы мехмата ЮФУ.
Типы - дело непростое, и на начальных занятиях мы в программах используем стиль var sum := 0. Но приходит время - и мы начинаем говорить о явном указании типов. Заодно ругаем старый Паскаль - куда ж без этого )
#начинающим
#учителям
Приближается 1 сентября. Публикуем пункт о явном указании типа при описании переменной из учебника для учеников компьютерной школы мехмата ЮФУ.
Типы - дело непростое, и на начальных занятиях мы в программах используем стиль var sum := 0. Но приходит время - и мы начинаем говорить о явном указании типов. Заодно ругаем старый Паскаль - куда ж без этого )
#начинающим
#учителям
С 1 сентября!
Поздравляем всех учителей и преподавателей с началом учебного года!
В нашем канале мы рассматриваем применение PascalABC.NET как первого языка программирования. Мы специально разрабатывали наш язык для обучения современному программированию. Это - молодой язык, он активно развивается с 2015 года и содержит лучшие средства современного программирования и огромное количество библиотек.
В закрепленном сообщении в шапке канала можно увидеть множество тегов, которыми помечаются публикации - щелкнув на тег, можно просмотреть все публикации по данной теме.
Успехов преподавателям и их ученикам в новом учебном году!
Поздравляем всех учителей и преподавателей с началом учебного года!
В нашем канале мы рассматриваем применение PascalABC.NET как первого языка программирования. Мы специально разрабатывали наш язык для обучения современному программированию. Это - молодой язык, он активно развивается с 2015 года и содержит лучшие средства современного программирования и огромное количество библиотек.
В закрепленном сообщении в шапке канала можно увидеть множество тегов, которыми помечаются публикации - щелкнув на тег, можно просмотреть все публикации по данной теме.
Успехов преподавателям и их ученикам в новом учебном году!
❤6👍5😭1
Правила присваивания для типов
Продолжаем публикацию новых материалов для начинающих.
Что такое типы - важнейшая тема, с которой сталкиваются начинающие. На первых занятиях обычно используется автовыведение типа sum := 0, так что задумываться о типах не надо. Но немного позже говорить о типах обязательно. И первый камень преткновения - присваивание значений переменным разных типов.
В PascalABC.NET как и во всех языках со статической типизацией переменная получает тип при описании, и поменять его потом нельзя. Это - огромное преимущество, оно позволяет генерировать эффективный код, работающий быстрее Питон-программ в 100 раз, а также проверяющий все ошибки типов на этапе компиляции.
#начинающим
#учителям
Продолжаем публикацию новых материалов для начинающих.
Что такое типы - важнейшая тема, с которой сталкиваются начинающие. На первых занятиях обычно используется автовыведение типа sum := 0, так что задумываться о типах не надо. Но немного позже говорить о типах обязательно. И первый камень преткновения - присваивание значений переменным разных типов.
В PascalABC.NET как и во всех языках со статической типизацией переменная получает тип при описании, и поменять его потом нельзя. Это - огромное преимущество, оно позволяет генерировать эффективный код, работающий быстрее Питон-программ в 100 раз, а также проверяющий все ошибки типов на этапе компиляции.
#начинающим
#учителям