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

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

前往频道在 Telegram

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

显示更多
1 856
订阅者
-124 小时
-97 天
-2430 天
帖子存档
Переменная с именем Sin В PascalABC.NET можно переопределять имена, которые определены в модулях. Поскольку модуль является п
Переменная с именем Sin В PascalABC.NET можно переопределять имена, которые определены в модулях. Поскольку модуль является пространством имен, а мы переопределяем то же имя в другом пространстве имен, - это возможно и абсолютно правильно. Это - большое преимущество языка Object Pascal перед такими языками как C++, в котором глобальные переменные, определенные в другом файле попадают в то же пространство имен, что и в текущем, что вызывает ошибку компиляции. В PascalABC.NET можно, например, определить переменную с именем Sin, совпадающим с именем стандартной функции в системном модуле. При этом новое имя Sin перекроет старое. Чтобы вернуться к старому, придётся упомянуть перед ним его имя пространства имен, которое совпадает с именем модуля. Поскольку Sin определен в модуле PABCSystem, то для обращения к стандартному Sin следует писать PABCSystem.Sin.

Легковесные пространства имен https://teletype.in/@pascalabcnet/Lightweight_namespaces

Swap или кортежи для обмена значений двух переменных Если необходимо поменять значения двух переменных - что следует использо
Swap или кортежи для обмена значений двух переменных Если необходимо поменять значения двух переменных - что следует использовать - множественное присваивание или стандартную процедуру Swap? Или может быть код с использованием третьей переменной будет самым быстрым? Проведем замеры производительности. Приведенный тест свидетельствует, что процедура Swap работает столь же производительно, что и использование алгоритма с третьей переменной прямо в коде (за счет inline-встраивания, проводимого виртуальной машиной). А вот красивый с виду код с множественным присваиванием и использованием кортежей работает более чем в 5 раз медленнее

Примите поздравления со Всемирным днем учителя! Здоровья вам, сил, терпения, уважения окружаюших и достойной оплаты вашего нелёгкого, но такого нужного труда!

Ненависть к оператору break Достаточно часто приходится слышать от студентов, что еще во время обучения в школе им запрещали
Ненависть к оператору break Достаточно часто приходится слышать от студентов, что еще во время обучения в школе им запрещали пользоваться оператором break. Причем, недобросовестные преподаватели не удосуживались объяснять, почему же собственно нельзя - просто говорили, что использование break - грубейшая ошибка. На резонный вопрос, почему же всё-таки оператор break есть в языке раз он плохой, ответ был прост: "Будешь использовать - поставлю двойку". Эта история - характерный пример того, как устойчиво держатся в профессиональном сообществе ложные знания. Да, всегда можно переписать код, использующий break, без этого оператора. Но накладные расходы на написание и понимание такого кода порой слишком велики. Рассмотрим два решения задачи линейного поиска значения k среди n введенных. Решение с break - ясное и легко пишется. Попытка избавиться от break приводит к циклу while с составным условием, в котором легче совершить ошибку. Кроме того, для перебора n элементов приходится вручную поддерживать счетчик i.

Прямо сейчас - стрим Александра Богданова по PascalABC.NET https://www.youtube.com/watch?v=RulhCYnbRAA

Алгоритм вычисления квадратного корня с использованием множественного присваивания https://teletype.in/@pascalabcnet/y7Q4i4qZceE

Рисуем сердце на значке мехмата ЮФУ Значок мехмата ЮФУ содержит неявно заданную кривую в форме сердца. У студентов первого ку
Рисуем сердце на значке мехмата ЮФУ Значок мехмата ЮФУ содержит неявно заданную кривую в форме сердца. У студентов первого курса направления Фундаментальная информатика возникла идея нарисовать его программой на PascalABC.NET.

Функция PartitionPoints Вывести таблицу значений функции на отрезке проще всего, используя стандартную функцию PartitionPoint
Функция PartitionPoints Вывести таблицу значений функции на отрезке проще всего, используя стандартную функцию PartitionPoints(a,b,n), возвращающую последовательность из n+1 точек, разделяющих отрезок [a,b] на n равных частей. На скриншоте - табулируем функцию Sin(x) на отрезке [0,Pi]

И снова про вещественные Короткая статья в Telegra.ph: https://telegra.ph/Snova-pro-veshchestvennye-09-27

В PascalABC.NET предусмотрено огромное количество функций и конструкций для короткого заполнения и вывода элементов. Данный п
В PascalABC.NET предусмотрено огромное количество функций и конструкций для короткого заполнения и вывода элементов. Данный пример иллюстрирует заполнение и вывод массива в классическим Object Pascal и в PascalABC.NET

Вещественные числа представляются в памяти компьютера не точно, а приближенно. Возникающая при этом погрешность называется погрешностью округления. Например, в результате выполнения кода
## Print(1/3);
выводится
0.333333333333333 
Таким образом, погрешность - в 16-м знаке после точки. При вычислениях погрешность накапливается. Она называется вычислительной погрешностью. И возникают интересные эффекты. Например, при выполнении
## Print(1 - 1/3 - 1/3 - 1/3);
выведется не 0 как можно было ожидать, а
1.11022302462516E-16

Это значит, что при вычислениях с вещественными результат может быть полностью неправильным. Например, после выполнения
## 
var x := (1 - 1/3 - 1/3 - 1/3) * 1E16;
Print(x);
выведется не 0, а
1.11022302462516 

При работе с вещественными необходимо учитывать эти эффекты.

Открыта официальная группа PascalABC.NET ВКонтакте https://vk.com/public216112322