Продолжение курса pascal-basics. Второй том: объектно-ориентированное программирование, коллекции .NET, сортировки, модули и итоговый проект.
| № | Тема | Конспект | Примеры |
|---|---|---|---|
| 1 | Классы и объекты | README | код |
| 2 | Инкапсуляция и свойства | README | код |
| 3 | Наследование | README | код |
| 4 | Полиморфизм, абстрактные методы | README | код |
| 5 | Исключения | README | код |
| 6 | Интерфейсы | README | код |
| 7 | Generics и коллекции .NET | README | код |
| 8 | Сортировки и бинарный поиск | README | код |
| 9 | Модули | README | код |
| 10 | Итоговый проект | README | код |
Примеры курса рассчитаны на PascalABC.NET — свободную реализацию Pascal для платформы .NET.
- Скачать: https://pascalabc.net
- VS Code + расширение PascalABC.NET: открыть
.pasи нажать F9.
-
Уроки 1–8 — компилируются и запускаются в VS Code (F9).
-
Урок 9 (модули) — расширение PascalABC.NET для VS Code не подхватывает модули автоматически. Программа выдаёт «Модуль не найден», хотя файл модуля лежит рядом.
Как запустить урок 9: через Free Pascal (
fpc) в терминале.- Установка в Fedora:
sudo dnf install fpc - Windows / macOS: https://www.freepascal.org/download.html
cd lesson-09-modules fpc use_mathutils.pas ./use_mathutils - Установка в Fedora:
- PascalABC.NET 3.8+ (VS Code / standalone)
- Free Pascal 3.2+ — для урока 9 (опционально)
- Базовый курс pascal-basics — пройден
pascal-advanced/
├── README.md
├── LICENSE
├── .gitignore
├── lesson-01-classes/
│ ├── README.md
│ └── *.pas
├── lesson-02-encapsulation/
├── ...
В каждой папке урока:
README.md— конспект: цель, ключевые понятия, примеры, что дальше.*.pas— рабочие примеры кода с комментариями.
- Читаем
README.mdурока. - Открываем и разбираем примеры
*.pas. - Запускаем в PascalABC.NET (F9).
- Меняем, экспериментируем.
- Переходим к следующему уроку.
По ходу курса мы столкнулись с рядом особенностей среды. Они собраны здесь, чтобы не наступать на одни и те же грабли.
- Автосвойства не поддерживаются.
property X: Integer;безread/writeне компилируется. Пишитеproperty X: Integer read fX write fX;. read/writeпринимают только имя поля или метода, не выражение. Для вычисляемых свойств заводите геттер-функцию.inherited (args);в конструкторе наследника не работает. Присваивайте поля родителя напрямую — ониprotected.- Имя программы не должно совпадать с именем переменной.
Регистр не важен:
program Shapes;+var shapes— конфликт. - Модули (
unit) не подхватываются в VS Code. См. урок 9.
MIT