- •Краткое введение в язык программирования PascalAbc (материал взят из справки по системе PascalAbc). Общие сведения
- •Структура программы
- •Описание переменных и констант
- •Описание типов
- •Ввод и вывод. Форматы вывода
- •Выражения и операции
- •Задание 1. Вычисление значения выражения
- •Задание 2. Ms Word
- •Задание 3. Решение уравнения методом последовательных приближений
- •Задание 4. Решение уравнения усовершенствованным методом последовательных приближений
- •Задание 5. Решение уравнения методом хорд
- •Задание 6. Решение уравнения методом касательных (метод Ньютона)
- •Задание 7. Решение уравнения комбинированным методом хорд и касательных
- •Задание 8. Решение системы линейных алгебраических уравнений (слау) методом Крамера
Выражения и операции
Любое выражение имеет определенный тип и после вычисления возвращает некоторое значение. Простейшими выражениями являются переменные и константы. Более сложные выражения строятся из более простых с использованием операций, скобок, вызовов функций, индексов и приведений типов. Данные, к которым применяются операции, называются операндами.
В Pascal ABC имеются следующие операции: @, not, ^, *, /, div, mod, and, shl, shr, +, -, or, xor, =, >, <, <>, <= и >=.
Арифметические операции
К арифметическим относятся бинарные операции + - * / для вещественных и целых чисел, бинарные операции div и mod для целых чисел и унарные операции + и - для вещественных и целых чисел. Выражение, имеющее числовой тип, называется арифметическим. Тип арифметического выражения определяется по следующему правилу: если все операнды целые и в выражении отсутствует операция деления /, то выражение имеет тип integer, в противном случае выражение имеет тип real. Например, если b имеет тип byte, c имеет тип 1..9, то b+c и -b имеют тип integer, а 2.0+b и 1/2 - тип real.
Логические операции
К логическим относятся бинарные операции and, or и xor, а также унарная операция not, имеющие операнды типа boolean и возвращающие значение типа boolean. Выражение, имеющее тип boolean, называется логическим.
Операции отношения
Операции отношения <, >, <=, >=, =, <> возвращают значение типа boolean и применяются к операндам целого, вещественного, символьного, логического и строкового типов, а также к типизированным указателям. Операции = и <> также применяются к операндам типа pointer, к операндам, являющихся объектами классов и к константе nil. При сравнении символа и строки символ преобразуется в строку длины 1.
Побитовые операции
Побитовые операции and, or, not, xor, shl, shr производят побитовые манипуляции с операндами целого типа. Для унарной операции not результат имеет тот же тип, что и операнд. Для остальных операций результат имеет тип integer. Например, если b имеет тип byte и b=1, то b shl 10=1024, а not b=254.
Строковые операции
Помимо операций отношения <, >, <=, >=, =, <>, к строковым и символьным операндам применима операция конкатенации (слияния) +. Ее результат имеет строковый тип. Например, 'a'+'b'='ab'. Поскольку строки могут содержать максимум 255 символов, то если сливаются строки суммарной длины больше 255, то программа завершается сообщением об ошибке
» Ошибка: произошло переполнение строки при выполнении операции "+".
Операция @
Операция @ применяется к переменной и возвращает ее адрес.
Операции с указателями
К типизированным указателям применима операция разыменования ^: если p является указателем на тип T, то p^ - элемент типа T, на который указывает p.
Помимо операций отношения <, >, <=, >=, =, <>, к типизированным указателям применимы арифметические операции + и -.
Операция + применяется к типизированному указателю и целому числу: если p имеет тип ^T и указывает на элемент a[k] одномерного массива элементов типа T, i - целое, то p+i возвращает адреc элемента a[k+i]. Операция - применяется к двум типизированным указателям одного типа: если p1 и p2 указывают на элементы одномерного массива элементов типа T, то p2-p1 возвращает количество элементов между этими указателями (взятое со знаком -, если адрес в p2 меньше адреса в p1). Например:
var
a: array [1..10] of integer;
p: ^integer;
begin
p:=@a[1];
for i:=1 to 10 do
begin
p^:=i;
p:=p+1;
end;
...
Операции с множествами
К множествам применимы операции + (объединение), - (разность) и * (пересечение):
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 (низший)