- •Система 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 Программирование циклических алгоритмов
Операции с множествами
К множествам применимы операции + (объединение), - (разность) и * (пересечение):
var s1,s2,s: set of byte; begin s1:=[1..4]; s2:=[2..5]; s:=s1+s2; // s=[1..5] s:=s1-s2; // s=[1] s:=s1*s2; // s=[2..4]
К множествам применимы также операции отношения = (равенство), <> (неравенство), <= (вложено) и >= (содержит):
var s1,s2,s: set of byte; b: boolean; begin s1:=[1..4]; s2:=[2..5]; s:=[1,2]; b:=s1=s2; // b=False b:=s2<>s; // b=True b:=s<=s2; // b=False b:=s1>=s; // b=True
Наконец, операция in определяет, принадлежит ли элемент множеству:
1 in [2..5] // False 3 in [2..5] // True
Приоритет операций
Приоритет определяет порядок выполнения операций в выражении. Первыми выполняются операции, имеющие высший приоритет. Операции, имеющие одинаковый приоритет, выполняются слева направо.
Таблица приоритетов операций
@, not, ^ |
1 (наивысший) |
*, /, div, mod, and, shl, shr |
2 |
+, -, or, xor |
3 |
=, <>, <, >, <=, >=, in |
4 (низший) |
Описание переменных и констант
Раздел описания переменных начинается со служебного слова var, после которого следуют строки вида
список имен переменных: тип;
Имена в списке перечисляются через запятую. Например:
var a,b,c: integer; d: real; e,f: integer; s,s1: string; ch: char;
Раздел описания именованных констант начинается со служебного слова const, после которого следуют строки вида
имя константы = значение;
или
имя константы : тип = значение;
Например:
const Pi = 3.14; Count = 10; Name = 'Mike'; DigitsSet = ['0'..'9']; Arr: array [1..5] of integer = (1,3,5,7,9); Rec: record name: string; age: integer end = (name: 'Иванов'; age: 23); Arr2: array [1..2,1..2] of real = ((1,2),(3,4));
Выражения после знака равенства в последних трех строчках называются конструкторами констант-массивов и констант-записей и могут быть использованы только при описании типизированных констант.
Описание типов
Раздел описания типов начинается со служебного слова type, после которого следуют строки вида
имя типа = тип;
Например,
type myint = integer; arr10 = array [1..10] of integer; pinteger = ^integer; A = class i: integer; constructor Create(ii: integer); begin i:=ii; end; end;
При описании рекурсивных структур данных указатель на тип может фигурировать раньше описания самого типа в определении другого типа:
type PNode = ^TNode; TNode = record data: integer; next: PNode; end;
При этом важно, чтобы определения обоих типов находились в одном разделе type.
Следующее описание, однако, ошибочно:
type TNode = record data: integer; next: ^TNode; end;
(сообщение об ошибке: "Тип TNode полностью не определен").
Обзор типов
В Pascal ABC имеются следующие типы:
integer (целый) byte (байтовый) char (символьный) перечислимый диапазонный boolean (логический) real (вещественный) complex (комплексный) string (строковый) тип "массив" тип "запись" тип "указатель" процедурный файловый классовый
Типы integer, byte, char, перечислимый и диапазонный называются порядковыми. Только значения этих типов могут быть индексами массивов и фигурировать в качестве выражения-переключателя в операторе case. Переменная-параметр цикла for также должна иметь перечислимый тип.
Ко всем значениям порядкового типа применимы следующие функции:
Pred(x) возвращает значение, предшествующее x (к наименьшему значению не применяется); Succ(x) возвращает значение, следующее за x (к наибольшему значению не применяется); Ord(x) возвращает порядковое целое значение, соответствующее x. Для целых x возвращает само значение x, для символов char возвращает их код, а для элементов перечислимого типа - их номер (нумерация начинается с нуля).