PascalABC.NET официальный канал
الذهاب إلى القناة على Telegram
Официальный канал языка и системы программирования PascalABC.NET
إظهار المزيد1 857
المشتركون
+124 ساعات
-127 أيام
-2330 أيام
أرشيف المشاركات
Ненависть к break
Каждый год в сентябре в аудитории студентов 1 курса я задаю один и тот же вопрос: не запрещали ли вам в школе пользоваться оператором break?
В основном - нет - всё нормально. Но всегда находятся 5-6 студентов, которые рассказывают ужасные истории. Итак, их ответы - почему нельзя пользоваться оператором break по мнению некоторых школьных учителей:
1. Это развивает плохое алгоритмическое мышление
2. Решение с while - намного лучше - посмотрите - там нет этого нехорошего break - и это хорошо!
3. Решение с break свидетельствует о скудности алгоритмического ума (!)
4. Будете использовать break - поставлю двойку!
Итак, почему решение с break - хорошее:
- даёт естественный способ выхода из цикла
- легко масштабируется на последовательности
Почему решение с while - плохое:
- приходится поддерживать счетчик повторений самому
- сложное условие, в котором можно запутаться в нескольких местах (or вместо and, i<n и т.д.)
- труднее читать - тебе и членам твоей команды
Функция ReadSeqInteger для считывания последовательности целых
Функция ReadSeqInteger позволяет считать n целых в отдельную переменную и тем самым не смешивать ввод и вычисления.
Другое её положительное качество - данные не считываются в память одновременно, а считываются по одному циклом foreach по мере необходимости. Такое свойство последовательности называется ленивостью.
#начинающим
Пополнение в библиотеке School
Начиная с версии 3.9.0.3352 от 13.09.2023 добавлена функция
BinFormat, позволяющая переводить целое десятичное число (в том числе, типа BigInteger) в двоичную систему счисления возвращать отформатированный результат.
Вызов функции: BinFormat(ДесятичноеЧисло, Длина_в_байтах, Разделитель_байтов). Второй и третий параметры являются необязательными. По умолчанию Длина_в_байтах равна нулю (нужное количество байт выбирается автоматически), а в качестве значения параметра Разделитель_байтов используется пробел. Если полученное значение не помещается в заданное параметром количество байт, это количество будет увеличено до необходимого. Задавая в качестве разделителя пустую строку, получаем результат без разделителей, но все равно дополненный нулями слева до длины, кратной восьми.
## uses School;
Println(BinFormat(13)); // 00001101
Println(BinFormat(12345678)); // 10111100 01100001 01001110
Println(BinFormat(12345678, 4)); // 00000000 10111100 01100001 01001110
Println(BinFormat(12345678, 2, '.')); // 10111100.01100001.01001110
Println(BinFormat(0, 2)); // 00000000 00000000
Println(BinFormat(12453674856bi)); // 00000010 11100110 01001011 11111111 01101000Разделители цифр в числовых константах PascalABC.NET
В PascalABC.NET появились разделители _ в числовых константах. Их использование позволяет не запутаться в количестве разрядов в числах с большим количеством цифр.
#новое
PascalABC.NET vs старый Паскаль
На скриншоте - простейшая программа со вводом, вычислениями и выводом. По сравнению со старым Паскалем в PascalABC.NET используются современные конструкции и концепции: автовывод типов, внутриблочные описания переменных, функции ввода с приглашением к вводу, кортежи и распаковка кортежей в переменные.
Начинающим рекомендуется только новый стиль.
Проверка утверждений Assert. Предусловия
Assert - утверждение, которое проверяется в любом месте программы во время ее отладки. Если утверждение не выполняется, то сразу возникает окно с ошибкой в утверждении.
Использование Assert - хороший способ для начинающих контролировать правильность исходных данных
Начало занятий в компьютерной школе мехмата ЮФУ
Одна из крупнейших очных компьютерных школ страны - компьютерная школа мехмата ЮФУ - начала свою работу. Сегодня её собрания посетило более 500 школьников. На направлении Юный программист будет заниматься около 400 учеников. Все они начинают изучение программирования с языка PascalABC.NET, который возник и успешно развивается во многом благодаря Компьютерной школе мехмата ЮФУ.
Здесь - самые современные методики обучения программированию, здесь - самые современные языковые конструкции, здесь - первый и основной язык программирования - PascalABC.NET, разработанный в России, для российских школьников, собравший воедино языковые и библиотечные конструкции Top 10 наиболее популярных сегодня языков программирования - от С++ и Python - до Kotlin и C#.
Константы типа int64
Литеральная константа имеет либо тип integer либо тип int64 в зависимости от значения
Раскрываем алгоритм Where в задаче о поиске двух максимумов
Решение с Where - понятное, но производительность можно значительно увеличить, записав алгоритм, сочетающий фильтрацию и поиск минимума
На скриншоте - увеличение производительности в 4 раза.
Новая книга Валерия Рубанцева для начинающих
Известный популяризатор и автор многочисленных книг по программированию для начинающих Валерий Рубанцев выпустил новую книгу "Программирование на языке PascalABC.NET. Начальный уровень". В книге - более 500 страниц - и это только первая часть!
https://disk.yandex.ru/i/fd56h1-dogXtmg
Исходники программ:
https://disk.yandex.ru/d/Jru7A9UiUPzNDA
#начинающим
Sort vs Order
Sort и Order серьёзно отличаются по производительности. Order - в 20 раз медленнее. Причина - Order использует лямбду и новый массив.
Типичные ошибки с типизацией
В программах на PascalABC.NET соответствие типов проверяется компилятором. Рассмотрим пару примеров, в которых начинающие совершают ошибки неправильного использования типов, Явное указание типа нам поможет!
#начинающим
#учителям
Правила присваивания для типов
Продолжаем публикацию новых материалов для начинающих.
Что такое типы - важнейшая тема, с которой сталкиваются начинающие. На первых занятиях обычно используется автовыведение типа sum := 0, так что задумываться о типах не надо. Но немного позже говорить о типах обязательно. И первый камень преткновения - присваивание значений переменным разных типов.
В PascalABC.NET как и во всех языках со статической типизацией переменная получает тип при описании, и поменять его потом нельзя. Это - огромное преимущество, оно позволяет генерировать эффективный код, работающий быстрее Питон-программ в 100 раз, а также проверяющий все ошибки типов на этапе компиляции.
#начинающим
#учителям
С 1 сентября!
Поздравляем всех учителей и преподавателей с началом учебного года!
В нашем канале мы рассматриваем применение PascalABC.NET как первого языка программирования. Мы специально разрабатывали наш язык для обучения современному программированию. Это - молодой язык, он активно развивается с 2015 года и содержит лучшие средства современного программирования и огромное количество библиотек.
В закрепленном сообщении в шапке канала можно увидеть множество тегов, которыми помечаются публикации - щелкнув на тег, можно просмотреть все публикации по данной теме.
Успехов преподавателям и их ученикам в новом учебном году!
Явное указание типа при описании - текст из учебника
Приближается 1 сентября. Публикуем пункт о явном указании типа при описании переменной из учебника для учеников компьютерной школы мехмата ЮФУ.
Типы - дело непростое, и на начальных занятиях мы в программах используем стиль var sum := 0. Но приходит время - и мы начинаем говорить о явном указании типов. Заодно ругаем старый Паскаль - куда ж без этого )
#начинающим
#учителям
Явное указание типа при описании - текст из учебника
Приближается 1 сентября. Публикуем пункт о явном указании типа при описании переменной из учебника для учеников компьютерной школы мехмата ЮФУ.
Типы - дело непростое, и на начальных занятиях мы в программах используем стиль var sum := 0. Но приходит время - и мы начинаем говорить о явном указании типов. Заодно ругаем старый Паскаль - куда ж без этого )
#начинающим
#учителям
Что легко сделать в PascalABC.NET и очень трудно в C#
Много раз приходится слышать, что если язык разработан под .NET, то зачем? есть ведь C#!
Однако это утверждение не выдерживает критики. При реализации PascalABC.NET было сделано многое, что есть в стандартном Паскале и что приходилось с большими трудностями моделировать средствами .NET. Было также реализовано многое, чего нет в стандартном Паскале и нет в .NET.
Об одной очевидно простой задаче мы сейчас и поговорим. Этоу задачу решают на PascalABC.NET все начинающие буквально с первого занятия. А профессионалу на C# потребуется время и умственные усилия чтобы написать код для её решения.
Итак, задача. Дано 10 целых, которые мы вводим с клавиатуры. С ними надо что=то сделать - например, найти сумму. Целые могут вводиться по нескольку на строке, разделяясь пробелами, а могут - на разных строках, разделяясь нажатием Enter. После десяти целых в программе еще что то может вводиться - к этому надо быть готовым.
Решение на PascalABC.NET - на скриншоте.
Работающие гиперссылки в окне вывода
В новой версии PascalABC.NET (скачайте!) можно вывести гиперссылку в окно вывода - и при нажатии на нее в браузере откроется соответствующая страница. Это можно использовать например для теоретических пояснений к урокам.
Пример такого подхода содержится в уроке с легковесными проверяемыми заданиями: при запуске программы Введение в окно вывода выводится гиперссылка для изучения нужного материала.
#новое
