PascalABC.NET официальный канал
1.91K subscribers
514 photos
1 video
9 files
363 links
Официальный канал языка и системы программирования PascalABC.NET
Download Telegram
grid1.pas
5.4 KB
Можно потестировать координаты будущего модуля Turtle

При использовании колёсика мыши график масштабируется. Диапазон значений - достаточно большой

Необходимо проверить на предмет корректности отображения значений на осях при различном масштабе.

Файл для тестирования прилагается.
Обновлённый модуль Turtle

Обновлён школьный модуль Turtle для Исполнителя Черепаха.

uses Turtle;

begin
SetWidth(1.4);
SetColor(Colors.Blue);
//ToPoint(3,0);
Down;
loop 4000 do
begin
//Circle(0.1);
Forw(0.3);
Turn(Random(-120,120));
//Sleep(1);
end;
end.


Для знакомства с возможностями можно скачать новую версию и запустить указанную программу.

Обязательно понажимайте Пробел - меняется отображение координат.

Если программа будет тормозить при перерисовке, уменьшите количество итераций в цикле.

Принимаются предложения и сообщения о багах.

#новое
Мы - в Top-100 языков Rosetta code!

Кривая Гильберта - одна из известнейших фрактальных кривых.

Ниже приводится алгоритм рисования кривой Гильберта с помощью новой Черепахи. Это - 334-я задача, решенная на Rosetta Code:

https://rosettacode.org/wiki/Hilbert_curve#PascalABC.NET

uses Turtle;

procedure Hilbert(level: integer; angle,step: real);
begin
if level = 0 then
exit;
TurnRight(angle);
Hilbert(level-1, -angle, step);

Forw(step);
TurnLeft(angle);
Hilbert(level-1, angle, step);

Forw(step);
Hilbert(level-1, angle, step);

TurnLeft(angle);
Forw(step);
Hilbert(level-1, -angle, step);
TurnRight(angle);
end;

begin
SetWidth(2);
ToPoint(-9,-9);
Down;
Hilbert(6,90,0.3);
end.


Красота!
Функция SetOf

В PascalABC.NET появилась функция SetOf для создания множества.

Она возвращает множество HashSet, но это может измениться.

Функция SetOf введена для обучения начинающих.

На скриншоте - программа вычисления симметрический разности двух множеств.

#новое
Короткий текст про семантические ошибки в Python

Данная статья написана как часть учебного пособия для школьников по программированию на PascalABC.NET и Python.

В комментариях пишите про другие виды семантических ошибок в Python, проявляющихся при выполнении

https://teletype.in/@pascalabcnet/kr7IoIkQnCc
Forwarded from Agineer Ai
### Задача

Создать генератор случайных паролей на PascalABC.NET, используя интерполированные строки.

### Код программы

const
PasswordLength = 12; // Длина пароля
Characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&\*()_+[]{}|;:,.<>?'; // Разрешенные символы

function GeneratePassword(Length: Integer): string;
begin
// Генерируем пароль одной строкой, используя ArrGen для создания массива
Result := ArrGen(Length, i -> Characters.RandomElement()).JoinToString('');
end;

begin
var Password := GeneratePassword(PasswordLength); // Генерация пароля
PrintLn($"Сгенерированный пароль: {Password}"); // Вывод пароля с интерполированной строкой
end.


### Нейросеть

Сгенерировано с помощью ChatGPT от OpenAI.
Преобразование в вещественное, имеющее другой разделитель целой и дробной части

Реализован ряд дополнительных параметров для преобразования строк в вещественные с другим разделителем целой и дробной части

Можно также вызвать глобальную процедуру SetDecimalSeparator(','), которая будет влиять на все последующие преобразования

#новое
Визуализация массива точек в Turtle

В модуле Turtle появилась функция визуализации массива точек DrawPoints. В качестве параметров можно передавать либо массив точек, либо массивы абсцисс и ординат точек.

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

uses Turtle;

begin
Window.Title := 'Кластеризация';
var a := ReadLines('demo_2025_27_А.txt').Skip(1).JoinToString.ToReals(',').ToArray;
var xx := a[::2];
var yy := a[1::2];
DrawPoints(xx,yy);
end.


#новое
#ЕГЭ
PascalABC.NET версии 3.10.0

Вышел PascalABC.NET версии 3.10.0

Список изменений - здесь: https://pascalabcnet.github.io/mydoc_release_notes_3_10_0.html

Основные изменения: многострочные строковые литералы, операция to, новые модули WPF и Turtle, отладчик в Linux-версии.
Беседа с ChatGPT о новом востребованном языке программирования. И - новый язык школьного программирования будущего - EduFlex!

Обращаем внимание, что во всех вариантах ChatGPT предлагал язык со статической типизацией. И с цепочкой методов с лямбдами в качестве параметров.

https://teletype.in/@pascalabcnet/sH6iujQmEtL
IpatovRegEx.pdf
2.1 MB
Регулярные выражения для школьников в День Знаний

Администрация канала поздравляет всех читателей с Днем Знаний!

В День Знаний мы публикуем презентацию и выступление Ипатова Юрия Аркадьевича об использовании регулярных выражений при решении задач ЕГЭ (Съезд учителей информатики, 27.08.24).

Это был лучший доклад в секции ЕГЭ.

И - ссылка на сам доклад
https://youtu.be/ySMsZm0ZUNY
Библиотека MathNet.Numerics.dll

Библиотека математических вычислений MathNet.Numerics.dll интегрирована в инсталлятор PascalABC.NET.

На скриншоте - генерация набора чисел, подчиненного нормальному распределению

#новое
Первая программа на PascalABC.NET для студентов

Мы начинаем с языка программирования со статической типизацией компиляционного типа. Это позволяет не только лучше понять, как данные хранятся в памяти, но и гораздо лучше почувствовать эффективность программ, а также получить правильное представление о типах данных.

С первым занятием по программированию - всех читателей канала! Кто-то ученик, кто-то преподаватель, а кто-то - разработчик. Но все мы занимаемся одним делом - программируем.
Шпаргалка Python.pdf
237.8 KB
Переходим с Python на PascalABC.NET

Перед вами - шпаргалка соответствия конструкций Python и PascalABC.NET. Некоторые конструкции PascalABC.NET отсутствуют в Python - например, цикл loop или цикл repeat-until.
ChatGPT - решение задачи о принадлежности точки треугольнику

function triangleArea(x1, y1, x2, y2, x3, y3: real): real;
begin
Result := abs((x1 * (y2 - y3) + x2 * (y3 - y1) + x3 * (y1 - y2)) / 2.0);
end;

function IsPointInTriangle(px, py, x1, y1, x2, y2, x3, y3: real): boolean;
begin
var areaOriginal := triangleArea(x1, y1, x2, y2, x3, y3);

var area1 := triangleArea(px, py, x2, y2, x3, y3);
var area2 := triangleArea(x1, y1, px, py, x3, y3);
var area3 := triangleArea(x1, y1, x2, y2, px, py);

// Если сумма площадей равна исходной площади, точка принадлежит треугольнику
Result := abs(areaOriginal - (area1 + area2 + area3)) < 1e-9;
end;

begin
var (x1, y1) := (0.0, 0.0);
var (x2, y2) := (5.0, 0.0);
var (x3, y3) := (0.0, 5.0);
var (px, py) := (2.0, 2.0);

if IsPointInTriangle(px, py, x1, y1, x2, y2, x3, y3) then
Println('Точка принадлежит треугольнику')
else
Println('Точка не принадлежит треугольнику');
end.
Табулирование функции

Для табулирования функции Sin(x) воспользуемся генератором последовательности точек Range, возвращающим точки разбиения отрезка [a,b] с шагом h.
Воскресная компьютерная школа мехмата ЮФУ и PascalABC.NET

Система программирования PascalABC.NET обязана своим развитием детской компьютерной школе мехмата ЮФУ (сайт компьютернаяшкола.рф). Именно здесь обкатываются все последние методики, развиваются новые библиотеки и сервисы.

Каждый год в Компьютерной школе мехмата ЮФУ обучается более 400 юных программистов. На снимках - примерно половина этих школьников, пришедших вместе с родителями в прошлое воскресенье.

Первый и основной язык программирования - PascalABC.NET. Он ставит базу, а на втором году обучения изучается Python как второй язык. Школьники проходят его быстро потому что не допускают тех ошибок, которые делают начинающие с языка Python.

На фото - примерно половина этих школьников, пришедших на собрания в два последних воскресенья вместе с родителями.
Автоклассы и их предки

В PascalABC.NET стало возможно наследовать автоклассы от классов без полей. Это можно использовать в ряде сценариев.

#новое