Элементы языка Pascal. Понятие типа данных. Целые и вещественные типы данных.
Содержание:
- Элементы языка Pascal
- Понятие типа данных
- Целые тип данных
- Вещественный тип данных
- Логический тип данных
- Символьный тип данных
- Арифметические операции
Элементы языка Pascal
Алфавит языка состоит из множества символов, включающих в себя буквы, цифры и специальные символы.
Буквы: от A до Z – строчные, заглавные.
Цифры: от 0 до 9
16-тиричные цифры: от 0 до 9 и от A до F
Специальные символы: + — * / = < > [ ] . , ( ) : ; {} ^ @ $ #
:= знак присвоения;
>= больше или равно;
<> не равно;
<= меньше или равно;
(*……………*) скобки комментария.
{……….}
комментарии игнорируются компилятором.
Текст, заключенный между скобками, поясняет алгоритм и не является его частью.
В комментарии могут быть использованы буквы русского алфавита.
К спецсимволам относятся служебные слова, смысл которых определен однозначно. Служебные слова не могут быть использованы для других целей. С точки зрения языка это единые символы. Вот список служебных слов Турбо Паскаля:
Для именования различных алгоритмических объектов служат языковые конструкции, называемые идентификаторами. Такими объектами являются имена констант, переменных, типов данных, процедур и функций, программ. С помощью синтаксической диаграммы идентификатор можно определить следующим образом:
Идентификатор – это любая последовательность букв и цифр, начинающаяся с буквы. В Турбо Паскале к буквам приравнивается также знак подчеркивания. Строчные и прописные буквы в идентификаторах и служебных словах не различаются. Длина идентификатора может быть произвольной, но значащими являются только первые 63 символа.
Понятие типа данных
Концепция типов данных является одной из центральных в любом языке программирования. С типом любой величины связаны три ее основные свойства:
- форма внутреннего представления;
- множество принимаемых значений;
- множество допустимых операций.
Типы бывают простые и структурированные. В свою очередь простые типы бывают порядковые и вещественные, а порядковые – это целые, логические, символьные, перечисляемые, интервальные. Структурированные типы – это массивы, строки, множества, записи, файлы.
Тип данных называют порядковым, если он состоит из счетного количества значений, которые можно пронумеровать. Отсюда следует, что на этом множестве значений существуют понятия «следующий» и «предыдущий».
Целые тип данных
Целый тип присваивается данным (переменным и константам), которые во время работы программы могут принимать лишь целочисленные значения.
Например, программа вычисления функции факториала для натурального числа N (F=N!) оперирует с целыми числовыми значениями: N и F – натуральные числа.
В стандарте языка Паскаль определен единственный тип данных Integer. В Турбо Паскале целый тип данных представлен множеством типов.
Идентификатор | Длина, байт | Диапазон (множество) значений | Знак числа |
Целые типы | |||
Integer | 2 | от -32768 до 32767 | Целое со знаком |
Byte | 1 | от 0 до 255 | Целое без знака |
Word | 2 | от 0 до 65535 | Целое без знака |
Shorting | 1 | от –128 до 127 | Целое со знаком |
Например, для переменных X, Y, описанных в разделе объявления переменных, как
Var X: byte; Y: word;
операторы X := 2000; Y := -2; будут некорректными, так как переменная X не может принимать значение, больше чем 255, а Y должно быть положительным.
Вещественный тип данных
Данные вещественного типа – это вещественные значения, записанные в памяти в виде чисел с плавающей точкой. Область возможного изменения значений определяется размером (в байтах), отводимым под конкретную реализацию типа.
Вещественный тип в стандарте языка Паскаль называется Real. Помимо типа Real в современных реализациях Паскаля определены еще шесть стандартных вещественных типов. Каждый тип характеризуется своей областью изменения возможных значений.
Выбор конкретного типа для переменной связан с требуемой точностью вычислений.
Идентификатор | Длина, байт | Диапазон (множество) значений | Знак числа | |
Real | 6 | от 2,9*10 до 1,7*10 | 11-12 | |
Single | 4 | от 1,5*10 до 3,4*10 | 7-8 | |
Double | 8 | от 5*10 до 1,7*10 | 15-16 | |
Extended | 10 | от 3,4*10 до 1,1*10 | 19-20 | |
Для переменных вещественного типа определены две функции, позволяющие преобразовать переменную вещественного типа в переменную целого типа. В качестве аргументов функций выступают значения вещественного типа, а результат принадлежит целому типу. Названия и результат действия этих функций приведены в таблице:
Название | Назначение | Примеры |
Round(X) | Округление вещественного числа до целого | Round(3,456) = 3
Round(5,678) = 6 |
Trunc(X) | Выделение целой части | Trunc(3,456) = 3
Trunc(5,678) = 5 |
Логический тип данных
Данные логического типа (Boolean) в стандарте языка могут принимать одно из двух значений: True или False. Переменная или константа логического типа занимает 1 байт, в который записывается 1, если переменная или константа имеет значение True, и 0 в противном случае.
В современных реализациях языка добавлено еще три логических типа для совместимости с другими языками программирования и со средой Windows. Основные этих отличия типов от стандартного:
- в фактическом размере (в байтах);
- в величине, соответствующей значению True: в случае стандартного типа значению True соответствует только 1, записанная в байт, а в случае других логических типов – любое число, отличное от 1.
Идентификатор | Длина, байт | Диапазон (множество) значений |
Boolean | 1 | True, False |
ByteBool | 1 | True, False |
WordBool | 2 | True, False |
LongBool | 4 | True, False |
Символьный тип данных
Данные стандартного символьного типа представляют собой символы раскладки ASCII. Переменная или константа символьного типа занимает 1 байт памяти. В соответствии с синтаксисом языка значение символа заключается в одинарные кавычки: ‘ Р’, ‘ а’ , ‘1’.
Идентификатор | Длина, байт | Диапазон (множество) значений |
Char | 1 | все символы кода ASCII |
Арифметические операции
К арифметическим типам данных относятся группы вещественных и целых типов. К ним применимы арифметические операции и операции отношений.
Операции над данными бывают унарными (применимые к одному операнду) и бинарными (применимые к двум операндам). Унарная арифметическая операция одна. Это операция изменения знака. Ее формат: — < величина>
Бинарные арифметические операции стандартного Паскаля описаны в таблице.
ЗНАК | ВЫРАЖЕНИЕ | ТИП ОПЕРАЦИИ | ТИП РЕЗУЛЬТАТА | ОПЕРАЦИЯ |
+ |
A+B |
R, R
I, I I, R; R, I |
R
I R |
СЛОЖЕНИЕ |
_
|
A – B |
R, R
I, I I, R; R, I |
R
I R |
ВЫЧИТАНИЕ |
*
|
A*B |
R, R
I, I I, R; R, I |
R
I R |
УМНОЖЕНИЕ |
/ |
A/B |
R, R
I, I I, R; R, I |
R
R R |
ДЕЛЕНИЕ |
DIV | A div B | I, I | I | ЦЕЛОЕ ДЕЛЕНИЕ |
MOD | A mod B | I, I | I | ОСТАТОК ОТ ЦЕЛОГО ДЕЛЕНИЯ |
К арифметическим величинам могут быть применены стандартные функции Паскаля. Структура обращения к функции:
Функция выступает как операнд в выражении. Например, в следующем операторе присваивания
X := 2 * Sin (A) / Ln (3.5) + Cos (C — D)
операндами являются три функции: sin, ln, cos. Их запись такая же, как в математике. Аргументы называются фактическими параметрами и являются в общем случае выражениями фактического типа. Аргументы записываются в круглых скобках. Результат вычисления функции – величина соответствующего типа.
Ниже приведена таблица, которая содержит описания математических стандартных функций Турбо Паскаля.
Обращение | Функция | Тип результата |
Frac(x) | Дробная часть х | R |
Int(x) | Целое | R |
Ln(x) | Натуральный логарифм | R |
Pi | Постоянная величина ? | R |
Abs(x) | Абсолютное значение (модуль числа) | R ИЛИ I |
Arctan(x) | Арктангес х | R |
Cos(x) | Косинус х | R |
Exp(x) | е- экспанента | R |
Random | Случайное число от 0 до 1 | R |
Random(n) | Случайное число от 0 до n | I |
Odd(x) | True , если х – нечетное
False , если х – четное |
|
Sin(x) | Синус х –( в радианах) | R |
Sqr(x) | Квадрат аргумента | I ИЛИ R |
Sqrt(x) | Квадратный корень | R |
Trunc(x) | Ближайшее целое, не превышающие аргумент по модулю (отсекание дробной части числа x) | I |
Round(x) | Округление до ближайшего целого аргумента | I |
Остальные часто встречающиеся функции (тангенс, арксинус и т.д.) моделируются из уже определенных с помощью известных математических соотношений:
Определенную проблему представляет возведение X в степень n. Если значение степени n – целое положительное число, то можно n раз перемножить X (что дает более точный результат и при целом n предпочтительнее) или воспользоваться формулой,:
которая программируется с помощью стандартных функций на языке Паскаль:
- exp(n*ln(x)) – для положительного X;
- -exp(n*ln(abs(x))) – для отрицательного X.
Эту же формулу можно использовать для возведения X в дробную степень n, где n — обыкновенная правильная дробь вида k/l, а знаменатель l нечетный. Если знаменатель l четный, это означает извлечение корня четной степени, следовательно есть ограничения на выполнение операции.
При возведении числа X в отрицательную степень n следует помнить, что
Таким образом, для программирования выражения, содержащего возведение в степень, надо внимательно проанализировать значения, которые могут принимать X и n, так как в некоторых случаях возведение X в степень n невыполнимо.
Для вычисления логарифма с основанием a используем: loga(x) = ln(x)/ln(a)