Файл: Основы программирования на языке Pascal (Основы языка Паскаль).pdf
Добавлен: 28.03.2023
Просмотров: 264
Скачиваний: 2
2.1 Типы данных
Данные, с которыми работает программа, хранятся в оперативной памяти. Естественно, что необходимо точно знать, сколько места они занимают, как именно закодированы и какие действия с ними можно выполнять. Все это задается при описании данных с помощью типа. Тип данных однозначно определяет: внутреннее представление данных, а, следовательно, и диапазон их возможных значений; допустимые действия над данными (операции и функции).
Например, целые и вещественные числа, даже если они занимают одинаковый объем памяти, имеют совершенно разный диапазон возможных значений; целые числа можно умножать друг на друга, а, к примеру, символы - нельзя. Каждое выражение в программе имеет определенный тип:
Стандартные типы:
логические
целые
вещественные
символьный
строковый
адресный
файловые
Типы, определяемые программистом:
Простые:
перечисляемый
интервальный
адресные
Составные:
массивы
строки
записи
множества
файлы
процедурные типы
объекты
Стандартные типы не требуют предварительного определения. Для каждого типа существует ключевое слово, которое используется при описании переменных, констант и т. д. Если же программист определяет собственный тип данных, он описывает его характеристики и сам дает ему имя, которое затем применяется точно так же, как имена стандартных типов.
Логические типы. Основной логический тип данных Паскаля называется 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].
2.2 Константы
Константой называют величину, значение которой не меняется в процессе выполнения программы.
Числовые константы служат для записи чисел. Различают следующие их виды:
Целочисленные (целые) константы: записываются со знаком + или -, или без знака, по обычным арифметическим правилам:
-10 +5 5
Вещественные числа могут записываться в одной из двух форм:
обычная запись: 2.5 -3.14 2. - обратите внимание, что целая часть отделяется от дробной символом точки;
экспоненциальная ("научная") форма: в этой записи вещественное число представляется в виде m*10p, где m – мантисса или основание числа, 0.1≤|m|≤1, p – порядок числа, это целочисленная константа. Действительно, любое вещественное число можно представить в экспоненциальной форме:
-153.5 -0.1535*103
99.005 0.99005*102
Во всех IBM-совместимых компьютерах вещественные числа хранятся как совокупность мантиссы и порядка, что позволяет упростить операции над ними, используя специальную арифметику, отдельно обрабатывающую мантиссу и порядок. Для программной записи числа в экспоненциальной форме вместо "умножить на 10 в степени" используется обозначение E или e (латинская):
-153.5 -0.1535*103 -0.1535E3 или -1.535E02
99.005 0.99005*102 0.99005E+2 или 9.9005e+01
Без принятия специальных мер, программа на Паскале будет выводить на экран и принтер вещественные числа именно в такой форме. Кроме того, такая форма удобна для записи очень маленьких и очень больших чисел:
1030 1e30
-1020 -1E20
10-30 1E-30
Поскольку размер памяти, отводимой под мантиссу и порядок, ограничен, то вещественные числа всегда представляются в памяти компьютера с некоторой погрешностью. Например, простейшая вещественная дробь 2/3 дает в десятичном представлении 0,666666... и, независимо от размера памяти, выделяемой для хранения числа, невозможно хранить все его знаки в дробной части. Одной из типичных проблем программирования является учет возможных погрешностей при работе с вещественными числами.
Кроме числовых констант существуют и другие их виды:
логические константы служат для проверки истинности или ложности некоторых условий в программе и могут принимать только одно из двух значений: служебное слово true обозначает истину, а false – ложь;
символьные константы могут принимать значение любого печатаемого символа и записываются как символ, заключенный в апострофы ('одинарные кавычки'):
'Y' 'я' ' '
В последнем случае значение символьной константы равно символу пробела. Если требуется записать сам символ апострофа как символьную константу, внутри внешних апострофов он удваивается: ''''
К символьным также относятся константы вида #X, где X – числовое значение от 0 до 255 включительно, представляющее собой десятичный ASCII-код символа. Таблицы ASCII-кодов, используемых операционными системами DOS и Windows, приведены в Приложении 1. Например, значение #65 будет соответствовать коду символа 'A' латинской. Обработка нажатий клавиш и расширенные коды клавиатуры описаны в главе 24 и Приложении 5.
Строковые константы – это любые последовательности символов, заключенных в апострофы. Как правило, строковые константы служат для записи приглашений к вводу данных, выдаваемых программой, вывода диагностических сообщений и т.п.:
'Введите значение X:'
'Ответ='
Если в строковой константе необходимо записать сам символ апострофа, это делается так же, как для символьных констант.
Именованные константы описываются в разделе описаний программы оператором следующего вида:
const Имя1=Значение1;
Имя2=Значение2;
. . .
ИмяN=ЗначениеN;