- •Система Pascal abc
- •Редактор
- •Горячие клавиши
- •Окно вывода
- •Окно ввода
- •Запуск и остановка программы
- •Программа прервана пользователем
- •Пошаговое выполнение программы
- •Окно отладки
- •Pascal abc Язык Pascal abc Структура программы
- •Идентификаторы и служебные слова
- •Выражения и операции
- •Арифметические операции
- •Операция @
- •Операции с указателями
- •Операции с множествами
- •Приоритет операций
- •Описание переменных и констант
- •Описание типов
- •Обзор типов
- •Все порядковые типы, а также типы boolean, real и complex называются простыми типами. Порядковые типы
- •Типы boolean, real и complex
- •Строковый тип
- •Массивы
- •Множества
- •Указатели
- •Процедурный тип
- •Эквивалентность типов
- •Неявное приведение типов
- •Явное приведение типов
- •Область действия идентификатора
- •Ввод и вывод. Форматы вывода
- •Оператор присваивания
- •Условный оператор
- •Составной и пустой операторы
- •Оператор выбора
- •Оператор цикла for
- •Оператор цикла repeat
- •Оператор вызова процедуры
- •Операторы break, continue и exit
- •Оператор with
- •Оператор безусловного перехода goto
- •Оператор try ... Except
- •Оператор try ... Finally
- •Оператор raise
- •Описание процедур и функций
- •Параметры процедур и функций
- •Локальные и глобальные переменные
- •Общие стандартные процедуры и функции
- •Стандартные процедуры и функции для работы со строками
- •Стандартные процедуры и функции для работы с файлами
- •Стандартные процедуры и функции для работы с памятью
- •Системные процедуры и функции
- •Стандартные константы
- •Обзор классов и объектов
- •Конструкторы и деструкторы
- •Свойства
- •Переменная Self
- •Наследование
- •Видимость членов класса
- •Переопределение методов
- •Приведение типов объектов
- •Операции is и as
- •Виртуальные методы и полиморфизм
- •Модуль crt
- •Модуль Timers
- •Модуль Sounds
- •Модуль Utils
- •Модуль PointRect
- •Модуль GraphAbc
- •Графические примитивы
- •Цветовые константы и функции для работы с цветом
- •Действия с пером
- •Действия с кистью
- •Действия со шрифтом
- •Действия с рисунками
- •Действия с графическим окном
- •Задание режимов вывода
- •Класс Picture
- •Описатели рисунков и класс Picture
- •Исполнитель Робот
- •Алгоритмизация
- •Алгоритм и его свойства
- •Способы описания алгоритмов
- •Линейные алгоритмы
- •Разветвляющиеся алгоритмы
- •Алгоритмы циклической структуры
- •Подчиненные алгоритмы
- •Системы программирования
- •Лабораторная работа № 1 Программирование линейных алгоритмов
- •Лабораторная работа № 2 Программирование разветвляющихся алгоритмов
- •Лабораторная работа № 4 Одномерные массивы - вектора
- •Литература Основная литература:
- •Дополнительная литература:
- •Лабораторная работа № 3 Программирование циклических алгоритмов
Описатели рисунков и класс Picture
Рисунки удобно рассматривать как объекты класса Picture, в котором собраны все основные действия с рисунками. Такой подход является более удобным и современным, чем подход с описателями рисунков. Единственный его недостаток - необходимость вводить основные понятия, связанные с классами, при обучении использованию рисунков. Подход с описателями позволяет работать с рисунками сразу после рассмотрения темы "Процедуры и функции" или даже раньше, если подпрограммы рассматривать просто как команды.
Тем не менее, автор программы настоятельно рекомендует использовать именно класс Picture при работе с рисунками, что позволит ученику раньше начать осваивать основные понятия объектно-ориентированного программирования.
Класс Picture полностью написан на Pascal ABC и содержит в своем интерфейсе все подпрограммы работы с рисунками.
Пример работы с рисунком с использованием описателей.
uses GraphABC; var n: integer; begin n:=LoadPicture('demo.bmp'); SetPictureTransparent(n,True); DrawPicture(n,0,0); DestroyPicture(n); end.
Эквивалентный пример работы с рисунком как объектом класса Picture выглядит более естественным:
uses GraphABC; var p: Picture; begin p:=Picture.Create('demo.bmp'); p.Transparent:=True; p.Draw(0,0); p.Destroy; end.
Исполнитель Робот
Исполнитель Робот действует на прямоугольном клеточном поле. Между некоторыми клетками, а также по периметру поля находятся стены. Основная цель Робота – закрасить указанные клетки и переместиться в конечную клетку.
Исполнитель Робот и поле, на котором он работает, отображаются следующим образом:
Здесь большой желтый квадрат изображает Робота, маленький желтый квадрат в левом верхнем углу клетки - конечное положение Робота, черными точками помечены клетки, которые надо закрасить.
Команды исполнителя Робот содержатся в модуле Robot:
Right – перемещает Робота вправо; Left – перемещает Робота влево; Up – перемещает Робота вверх; Down – перемещает Робота вниз; Paint – закрашивает текущую ячейку; WallFromLeft – возвращает True если слева от Робота стена; WallFromRight – возвращает True если справа от Робота стена; WallFromUp – возвращает True если сверху от Робота стена; WallFromDown – возвращает True если снизу от Робота стена; FreeFromLeft – возвращает True если слева от Робота свободно; FreeFromRight – возвращает True если справа от Робота свободно; FreeFromUp – возвращает True если сверху от Робота свободно; FreeFromDown – возвращает True если снизу от Робота свободно; CellIsPainted – возвращает True если ячейка, в которой находится Робот, закрашена; CellIsFree – возвращает True если ячейка, в которой находится Робот, не закрашена.
Для вызова задания для исполнителя Робот используется следующий шаблон программы:
uses Robot; begin Task('c1'); end.
Здесь Task - процедура, содержащаяся в модуле Robot и вызывающая задание с указанным именем.
Имеются следующие группы заданий для исполнителя Робот:
a – вводные задания; c – цикл с параметром; if – логические выражения; w – циклы с условием; сif – циклы + логические выражения; count – переменные-счетчики; cc – вложенные циклы; p – процедуры без параметров; pp – процедуры с параметрами.
Для создания произвольного поля размера 9 x 11 используется процедура StandardField без параметров, а для создания поля размера N x M - процедура Field(N,M). Робот при этом помещается в центр поля.