Файл: Основы программирования на языке Pascal ( ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ ПАСКАЛЬ).pdf
Добавлен: 01.04.2023
Просмотров: 90
Скачиваний: 2
Простые данные: целые числа, вещественные числа, символы, логические значения, данные - имена. Способы структурирования данных: массивы, записи, файлы, множества, ссылки.
Например, определения типов
Word = Array [1..20] of Char;
Man = Record
Name: Word;
Age: Integer
end;
Notebook = array [1..n] of Man;
Необходимо понимать, что связь "данные - управление" состоит не только и не столько в похожести правил их построения, сколько в ориентации структур управления на обработку структур данных. Оператор присваивания использует данные простых типов. Логические данные применяют для определения условий. Скалярные типы, определяемые программистом, используют для описания данных-индексов в массивах и селектора варианта в операторе выбора. Для обработки массивов удобно пользоваться оператором цикла с параметром, а для обработки файлов - операторами While и Repeat. Записи с вариантами естественно обрабатывать операторами варианта. Ссылочные (динамические) структуры естественным образом обрабатываются рекурсивно [5].
1.2 Типы данных
Данные, с которыми работает программа, хранятся в оперативной памяти. Естественно, что необходимо точно знать, сколько места они занимают, как именно закодированы и какие действия с ними можно выполнять. Все это задается при описании данных с помощью типа. Тип данных однозначно определяет: внутреннее представление данных, а, следовательно, и диапазон их возможных значений; допустимые действия над данными (операции и функции).
Например, целые и вещественные числа, даже если они занимают одинаковый объем памяти, имеют совершенно разный диапазон возможных значений; целые числа можно умножать друг на друга, а, к примеру, символы - нельзя. Каждое выражение в программе имеет определенный тип:
Стандартные типы:
логические
целые
вещественные
символьный
строковый
адресный
файловые
Типы, определяемые программистом:
Простые:
перечисляемый
интервальный
адресные
Составные:
массивы
строки
записи
множества
файлы
процедурные типы
объекты
Стандартные типы не требуют предварительного определения. Для каждого типа существует ключевое слово, которое используется при описании переменных, констант и т. д. Если же программист определяет собственный тип данных, он описывает его характеристики и сам дает ему имя, которое затем применяется точно так же, как имена стандартных типов.
Логические типы. Основной логический тип данных Паскаля называется boolean. Величины этого типа занимают в памяти 1 байт и могут принимать всего два значения: true (истина) или false (ложь). Внутреннее представление значения false - 0 (нуль), значения true - 1.
К величинам логического типа применяются логические операции and, or, xor и not. Они описаны ниже. Для наглядности вместо значения false используется 0, а вместо true — 1.
Таблица 1
a |
b |
a and b |
a or b |
a xor b |
not a |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
Операция and - "логическое ‘И’", логическое умножение. Операция or - "логическое ‘ИЛИ’", логическое сложение. Операция xor - так называемое исключающее ‘ИЛИ’, или операция неравнозначности. Логическое отрицание not является унарной операцией. Кроме этого, величины логического типа можно сравнивать между собой с помощью операций отношения, перечисленных в таблице:
Таблица 2
Операция |
Знак операции |
больше |
> |
больше или равно |
>= |
меньше |
< |
меньше или равно |
<= |
равно |
= |
не равно |
<> |
Результат этих операций имеет логический тип.
Целые типы. Целые числа представляются в компьютере в двоичной системе счисления. В Паскале определено несколько целых типов данных, отличающихся длиной и наличием знака:
Таблица 3
Тип |
Название |
Размер |
Знак |
Диапазон |
integer |
целое |
2 байта |
есть |
-32768..32767(-215..215-1) |
shortint |
короткое целое |
1 байта |
есть |
-128..127(-27..27-1) |
byte |
байт |
1 байта |
Нет |
0..255(0..28-1) |
word |
слово |
2 байта |
Нет |
0..65535(0..216-1) |
lonight |
длинное целое |
4 байта |
есть |
-2147483648..2147483647(-231..231-1) |
Операции. С целыми величинами можно выполнять арифметические операции, перечисленные ниже. Результат их выполнения всегда целый (при делении дробная часть отбрасывается).
Таблица 4
Операции |
Знак операции |
сложение |
+ |
вычитание |
- |
умножение |
* |
деление |
div |
остаток от деления |
mod |
Кроме этого, к целым величинам можно применять поразрядные операции and, or, xor и not. При выполнении этих операций каждая величина представляется как совокупность двоичных разрядов. Действие выполняется над каждой парой соответствующих разрядов операндов. Например, результатом операции 3 and 2 будет 2, поскольку двоичное представление числа 3 - 11, числа 2 - 10. Для работы с целыми величинами предназначены также и операции сдвига влево shl и вправо shr. Слева от знака операции указывается, с какой величиной будет выполняться операция, а справа - на какое число двоичных разрядов требуется сдвинуть величину. Например, результатом операции 12 shr 2 будет значение 3, поскольку двоичное представление числа 12 — 1100.
Вещественные типы. Вещественные типы данных хранятся в памяти компьютера иначе, чем целые. Внутреннее представление вещественного числа состоит из двух частей - мантиссы и порядка, и каждая часть имеет знак. Например, число 0,087 представляется в виде 0,87*10-1, и в памяти хранится мантисса 87 и порядок -1 (для наглядности мы пренебрегли тем, что данные на самом деле представляются в двоичной системе счисления и несколько сложнее). Существует несколько вещественных типов, различающихся точностью и диапазоном представления данных. Точность числа определяется длиной мантиссы, а диапазон - длиной порядка.
Таблица 5
Тип |
Название |
Размер |
Значащих цифр |
Диапазон значения |
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 |
comp |
большое целое |
8 |
19-20 |
-9.22e18..9.22e18(-263..263-1) |
Операции. С вещественными величинами также можно выполнять арифметические операции. Результат их выполнения — вещественный. В общем случае при выполнении любой операции операнды должны быть одного и того же типа, но целые и вещественные величины смешивать разрешается.
Стандартные функции. К вещественным величинам можно применять стандартные функции, перечисленные ниже:
Таблица 6
Имя |
Описание |
Результат |
Пояснения |
abc |
модуль |
Вещественный |
|x| записывается abs(x) |
arctan |
арктангенс угла |
Вещественный |
arctg x записывается arctan(x) |
cos |
косинус угла |
Вещественный |
cos x записывается cos(x) |
exp |
экспонента |
Вещественный |
ex записывается exp(x) |
frac |
дробная часть аргумента |
Вещественный |
frac(3.1) даст в результате 0.1 |
int |
целая часть аргумента |
Вещественный |
frac(3.1) даст в результате 3.0 |
ln |
натуральный логарифм |
Вещественный |
logex записывается ln(x) |
pi |
значение числа п |
Вещественный |
3.1415926536 |
round |
округление до целого |
Целый |
round(3.1) даст в результате 3 round(3.8) даст в результате 4 |
sin |
синус угла |
Вещественный |
sin x записывается sin(x) |
sqr |
квадрат |
Целый |
x2 записывается sqr(x) |
sqrt |
квадратный корень |
Вещественный |
записывается sqrt(x) |
trunc |
целая часть аргумента |
Целый |
trunc(3.1) даст в результате 3 |
Символьный тип. Этот тип данных, обозначаемый ключевым словом char, служит для представления любого символа из набора допустимых символов. Под каждый символ отводится 1 байт. К символам можно применять операции отношения (<, <=, >,>=, =, <>), при этом сравниваются коды символов. Меньшим окажется символ, код которого меньше. Стандартных функций для работы с символами тоже немного:
Таблица 7
Имя |
Описание |
Результат |
Пояснения |
ord |
порядковый номер символа |
Целый |
ord('b') даст в результате 98 ord('ю') даст в результате 238 |
chr |
преобразование в символ |
Символьный |
chr(98) даст в результате 'b' chr(238) даст в результате 'ю' |
pred |
предыдущий символ |
Символьный |
pred('b') даст в результате 'a' |
succ |
последующий символ |
Символьный |
pred('b') даст в результате 'a' |
upcase |
перевод в верхний регистр |
Символьный |
upcase('b') даст в результате 'B' |
Порядковые типы. В группу порядковых типов объединены целые, символьный, логический, перечисляемый и интервальный типы. Сделано это потому, что они обладают следующими общими чертами:
все возможные значения порядкового типа представляют собой ограниченное упорядоченное множество;
к любому порядковому типу может быть применена стандартная функция Ord, которая в качестве результата возвращает порядковый номер конкретного значения в данном типе;
к любому порядковому типу могут быть применены стандартные функции Pred и Succ, которые возвращают предыдущее и последующее значения соответственно;
к любому порядковому типу могут быть применены стандартные функции Low и High, которые возвращают наименьшее и наибольшее значения величин данного типа [6].
1.3 Операторы языка
Операторы языка описывают некоторые алгоритмические действия, которые необходимо выполнить для решения задачи. Тело программы можно представить как последовательность таких операторов. Идущие друг за другом операторы программы разделяются точкой с запятой. Все операторы языка Паскаль можно разбить на две группы: простые и структурированные.
Простые операторы. Простыми являются те операторы, которые не содержат в себе других операторов. К ним относятся:
- оператор присваивания;
- обращение к процедуре;
- оператор безусловного перехода GOTO;
- пустой оператор.
Оператор присваивания. С помощью этого оператора переменной или функции присваивается значение выражения. Для этого используется знак присваивания :=, слева от которого записывается имя переменной или функции, которой присваивается значение, а справа - выражение, значение которого вычисляется перед присваиванием. Допустимо присваивание значений переменным и функциям любого типа, за исключением типа файл. Тип выражения и тип переменной (или функции) должны быть совместимы для присваивания. Пример:
X := Y;
Z := А + В;
Res := (I>0) and (I<100);
I := Sqr(J) + I*К;
Оператор безусловного перехода GOTO. Использование меток
Оператор GOTO позволяет изменить стандартный последовательный порядок выполнения операторов и перейти к выполнению заданного оператора. Оператор, на который происходит переход, должен быть помечен меткой. Эта же метка должна быть указана и в операторе GOTO. Метки, используемые в Turbo Pascal, могут быть двух типов:
- целым числом в пределах от 0 до 9999;
- обычным идентификатором.