6
2)имя должно содержать только буквы, знак подчеркивания и цифры;
3)прописные и строчные буквы не различаются;
4)длина имени практически не ограничена.
Например, правильными именами будут z12, b, x_1, _y, а
неправильными — 2y, 145. Имена даются элементам программы, к
которым требуется обращаться: переменным, константам, процедурам,
функциям, меткам и т.д.
Ключевые (зарезервированные) слова — это идентификаторы,
имеющие специальное значение для компилятора. Их можно использовать только в том смысле, в котором они определены. Например, для оператора перехода определено ключевое слово goto, а для описания переменных — var. Имена, создаваемые программистом, не должны совпадать с ключевыми словами.
Знак операции — это один или более символов, определяющих действие над операндами. Внутри знака операции пробелы не допускаются.
Например, операция сравнения «меньше или равно» обозначается <=, а
целочисленное деление записывается как div. Операции делятся на унарные (с одним операндом) и бинарные (с двумя).
Типы данных
Данные, с которыми работает программа, хранятся в оперативной памяти. Компилятору необходимо точно знать, сколько места они занимают,
как именно закодированы и какие действия с ними можно выполнять. Все это задается при описании данных с помощью типа данных.
Тип данных однозначно определяет:
1)внутреннее представление данных, а следовательно и множество их возможных значений;
2)допустимые действия над данными (операции и функции).
Например, целые и вещественные числа, даже если они занимают
одинаковый объем памяти, имеют совершенно разные диапазоны
7
возможных значений; целые числа можно умножать друг на друга, а,
например, символы — нельзя. Каждое выражение в программе имеет определенный тип. Компилятор использует информацию о типе при проверке допустимости описанных в программе действий.
Паскаль характеризуется разветвленной классификацией типов данных:
1) Простые типы:
а) Порядковые:
-целые;
-логический;
-символьный;
-перечисляемый;
-интервальный.
б) Вещественные.
2) Структурированные типы:
а) массивы;
б) строки;
в) множества;
г) записи;
д) файлы. 3) Указатели.
Типы данных в языке Паскаль можно также классифицировать на
стандартные типы и типы, определяемые программистом.
Стандартные типы не требуют предварительного определения. Для каждого типа существует ключевое слово, которое используется при описании переменных, констант и т. д. Если же тип данных определяет сам программист, он описывает его характеристики и дает ему имя, которое затем применяется точно так же, как имена стандартных типов. Описание собственного типа данных должно задавать всю информацию, необходимую для его использования: внутреннее представление и допустимые действия.
8
В данной лабораторной работе подробнее рассмотрим целые и вещественные типы данных. Эти типы данных являются стандартными.
Целые типы
Целые числа представляются в компьютере в двоичной системе счисления. В Паскале определены несколько целых типов данных,
отличающиеся длиной и наличием знака: старший двоичный разряд либо воспринимается как знаковый, либо является обычным разрядом числа
(табл. 1). Внутреннее представление определяет диапазоны допустимых значений величин (от нулей до единиц во всех двоичных разрядах).
Таблица 1. Целые типы данных в языке Паскаль
Тип |
Название |
Размер |
Знак |
Диапазон значений |
integer |
Целое |
2 байта |
Есть |
–32 768 .. 32 767 (–215 .. 215–1) |
shortint |
Короткое целое |
1 байт |
Есть |
–128 .. 127 (–27 .. 27–1) |
byte |
Байт |
1 байт |
Нет |
0 .. 255 (0 .. 28–1) |
word |
Слово |
2 байта |
Нет |
0 .. 65 535 (0 .. 216–1) |
longint |
Длинное целое |
4 байта |
Есть |
–2 147 483 648 .. 2 147 483 647 |
|
|
|
|
(–231 .. 231–1) |
В стандарте Паскаля из целых типов определен только тип integer.
Вещественные типы
Вещественные типы данных хранятся в памяти компьютера иначе,
чем целые. Внутреннее представление вещественного числа состоит из двух частей — мантиссы и порядка, и каждая часть имеет знак. Например, число
0,031 представляется в виде 0,31*10-1, и в памяти хранится мантисса 31 и
порядок -1 (для наглядности мы пренебрегли тем, что данные на самом деле представляются в двоичной системе счисления и несколько сложнее).
Существует несколько вещественных типов, различающихся точностью и диапазоном представления данных (табл. 2). Точность числа определяется длиной мантиссы, а диапазон — длиной порядка.
Табл. 2. Вещественные типы данных в языке Паскаль
Тип |
Название |
Размер |
Значащих |
Диапазон значений |
|
|
|
десятичных |
|
9
|
|
|
цифр |
|
real |
Вещественный |
6 байт |
11–12 |
2.9e–39 .. 1.7e+38 |
single |
Одинарной |
4 байта |
7–8 |
1.5e–45 .. 3.4e+38 |
|
точности |
|
|
|
double |
Двойной |
8 байт |
15–16 |
5.0e–324 .. 1.7e+308 |
|
точности |
|
|
|
extended |
Расширенный |
10 байт |
19–20 |
3.4e–4932 .. 1.1e+4923 |
В стандарте Паскаля из вещественных типов определен только тип real.
Переменные
Переменная — это величина, которая во время работы программы может менять свое значение. Как правило, все переменные, используемые в программе, описываются в разделе описания переменных, начинающемся со служебного слова var. Для каждой переменной задается ее имя и тип,
например:
var number : integer; x, y : real;
Имя переменной определяет место в памяти, по которому находится значение переменной. Имя дает программист. Оно должно отражать смысл хранимой величины и быть легко распознаваемым.
Тип переменных выбирается исходя из диапазона и требуемой точности представления данных.
При объявлении можно присвоить переменной некоторое начальное значение, то есть инициализировать ее. Под инициализацией понимается задание значения, выполняемое до начала работы программы.
Инициализированные переменные описываются после ключевого слова const.
const n : integer = 25;
y : real = 1.42;
По умолчанию все переменные, описанные в главной программе,
обнуляются.
10
Арифметические операции, функции, выражения.
Арифметический оператор присваивания
К арифметическим типам данных относятся группы вещественных и целых типов. К ним применимы арифметические операции и операции отношений.
Операции над данными бывают унарными (применимые к одному операнду) и бинарными (применимые к двум операндам). Унарная арифметическая операция – одна. Это операция изменения знака. Ее формат:
- <величина>
Например:
-w
Бинарные арифметические операции стандартного Паскаля описаны в табл. 3. В ней I обозначает целые типы, R – вещественные типы.
Табл. 3. Бинарные арифметические операции стандартного Паскаля
Знак |
Выражение |
Типы |
Тип |
Операция |
|
|
операндов |
результатов |
|
+ |
A+B |
R, R |
R |
Сложение |
|
|
I, I |
I |
|
|
|
I, R R,I |
R |
|
- |
A-B |
R, R |
R |
Вычитание |
|
|
I, I |
I |
|
|
|
I, R R,I |
R |
|
* |
A*B |
R, R |
R |
Умножение |
|
|
I, I |
I |
|
|
|
I, R R,I |
R |
|
/ |
A/B |
R, R |
R |
Вещественное |
|
|
I, I |
R |
деление |
|
|
I, R R,I |
R |
|
div |
A div B |
I, I |
I |
Целое деление |
mod |
A mod B |
I, I |
I |
Остаток от |
|
|
|
|
целого деления |
Детальнее остановимся на операциях div и mod.
Деление c остатком — это арифметическая операция, вид операции
деления, результатом которой являются два целых числа: неполное частное
и остаток от деления целого числа на другое целое число.
11
Разделить целое число a на натуральное число 0 b a с остатком
означает представить его в виде:
a bq r, 0 r b (q , r Z)
При этом q называется неполным частным, а r — остатком от деления a на b .
Рассмотрим примеры:
1) При делении с остатком положительного числа a 55 на b 22
получаем неполное частное q 2 и остаток r 11. Проверка: 55 22 2 11.
На языке Паскаль выражение для получения неполного частного будет записано как 55 div 22, а выражение для получения остатка от деления –
как 55 mod 22.
2) При делении с остатком положительного числа a 12 на b 23
получаем неполное частное q 0 и остаток r 12 . Проверка: 12 23 0 12 .
На языке Паскаль выражение для получения неполного частного будет записано как 12 div 23, а выражение для получения остатка от деления –
как 12 mod 23.
К арифметическим величинам могут быть применены стандартные функции Паскаля. Аргументы стандартных функций в общем случае являются выражениями арифметического типа и записываются в круглых скобках. Результатом вычисления функции является величина соответствующего типа. В табл. 4 содержится описание математических
стандартных функций Турбо-Паскаля.
Табл. 4. Математические стандартные функции Турбо-Паскаля
Обращение |
Тип аргумента |
Тип результата |
Функция |
Pi |
- |
R |
Число |
abs(x) |
I, R |
I, R |
Модуль аргумента |
arctan(x) |
I, R |
R |
Арктангенс (радианы) |
cos(x) |
I, R |
R |
Косинус (x в радианах) |
exp(x) |
I, R |
R |
ex - экспонента |
frac(x) |
I, R |
R |
Дробная часть x |
int(x) |
I, R |
R |
Целая часть x |
ln(x) |
I, R |
R |
Натуральный логарифм |
random |
- |
R |
Псевдослучайное число в |
|
|
|
интервале [0, 1] |
12
random(x) |
I |
I |
Псевдослучайное число в |
|
|
|
интервале [0, x] |
round(x) |
R |
I |
Округление до ближайшего |
|
|
|
целого |
sin(x) |
I, R |
R |
Синус (x в радианах) |
sqr(x) |
I, R |
I, R |
Квадрат x |
sqrt(x) |
I, R |
R |
Корень квадратный |
trunc(x) |
R |
I |
Ближайшее целое, не |
|
|
|
превышающее x по модулю |
Приведем примеры использования некоторых стандартных функций: 1) Функция round(x) выполняет округление до ближайшего целого.
Например, round(5.2) даст в результате 5, а round(5.9) даст в результате 6.
2)Функция trunc(x) вычисляет ближайшее целое, не превышающее
xпо модулю. Например, trunc(5.2) даст в результате 5, а trunc(5.9)
также даст в результате 5.
Арифметическое выражение — это правило выполнения действий над числовыми величинами. В выражении участвуют операнды, объединенные знаками операций. Операндами выражения могут быть константы,
переменные и вызовы функций. Операции выполняются в определенном порядке в соответствии с приоритетами, как и в математике. Для изменения порядка выполнения операций используются круглые скобки, уровень их вложенности практически не ограничен.
Одна константа или одна переменная – простейшая форма арифметического выражения.
Например, запишем по правилам Паскаля следующее математическое выражение:
2a 
0,5sin(x y) .
0,2c ln(x y)
На Паскале это выглядит так (a, c, x и y – некоторые переменные целого либо вещественного типа):
(2*A + Sqrt(0.5 * sin(X + Y))) / (0.2 * C – Ln(X - Y))
13
Результатом выражения всегда является значение определенного типа,
который определяется типами операндов. Величины, участвующие в выражении, должны быть совместимых типов. Например, допускается использовать в одном выражении величины целых и вещественных типов.
Для того, чтобы правильно записывать арифметические выражения,
нужно соблюдать следующие правила:
1)Все символы пишутся в строчку на одном уровне. Проставляются все знаки операций (нельзя пропускать *).
2)Не допускаются два следующих подряд знака операций. Например,
нельзя записывать A + - B, но можно A + (-B).
3) Операции с более высоким приоритетом выполняются раньше операций с меньшим приоритетом. Порядок убывания приоритетов:
а) вычисление функции;
б) унарная операция смены знака (-);
в) *, /, div, mod;
г) +, -.
4)Несколько записанных подряд операций одинакового приоритета выполняются последовательно слева направо.
5)Часть выражения, заключенная в круглые скобки, вычисляется в первую очередь.
Не следует записывать выражений, не имеющих математического смысла. Например, деление на нуль, логарифм отрицательного числа и т.п.
В Паскале нет операции или стандартной функции возведения числа в произвольную степень. Для вычисления x y рекомендуется поступать следующим образом:
1) Если y – целое значение, то степень вычисляется через умножение, а
также используя стандартную функцию sqr(x). Например, x3 следует записать на Паскале как x*x*x или, использую стандартную функцию, sqr(x)*x. Большие степени следует вычислять умножением в цикле
(циклы будут изучены в следующих лабораторных работах).
