Данные, с которыми работает программа, хранятся в оперативной памяти. Компилятору необходимо точно знать, сколько места они занимают, как именно закодированы и какие действия с ними можно выполнять. Все это задается при описании данных с помощью типа данных . Тип данных однозначно определяет: 1) внутреннее представление данных, а следовательно и множество их возможных значений; 2) допустимые действия над данными (операции и функции). Например, целые и вещественные числа, даже если они занимают одинаковый объем памяти, имеют совершенно разные диапазоны
7 возможных значений; целые числа можно умножать друг на друга, а, например, символы — нельзя. Каждое выражение в программе имеет определенный тип. Компилятор использует информацию о типе при проверке допустимости описанных в программе действий.
Паскаль характеризуется разветвленной классификацией типов данных: 1) Простые типы: а) Порядковые: — целые; — логический; — символьный; — перечисляемый; — интервальный. б) Вещественные. 2) Структурированные типы: а) массивы; б) строки; в) множества; г) записи; д) файлы. 3) Указатели.
Step 7. Элементарные типы данных. Таблица переменных.
Типы данных в языке Паскаль можно также классифицировать на стандартные типы и типы, определяемые программистом . Стандартные типы не требуют предварительного определения. Для каждого типа существует ключевое слово, которое используется при описании переменных, констант и т. д. Если же тип данных определяет сам программист , он описывает его характеристики и дает ему имя, которое затем применяется точно так же, как имена стандартных типов. Описание собственного типа данных должно задавать всю информацию, необходимую для его использования: внутреннее представление и допустимые действия.
8 В данной лабораторной работе подробнее рассмотрим целые и вещественные типы данных . Эти типы данных являются стандартными.
Целые типы
Целые числа представляются в компьютере в двоичной системе счисления. В Паскале определены несколько целых типов данных, отличающиеся длиной и наличием знака: старший двоичный разряд либо воспринимается как знаковый, либо является обычным разрядом числа (табл. 1). Внутреннее представление определяет диапазоны допустимых значений величин (от нулей до единиц во всех двоичных разрядах).
Таблица 1. Целые типы данных в языке Паскаль
Тип | Название | Размер | Знак | Диапазон значений |
integer | Целое | 2 байта | Есть | –32 768 .. 32 767 (–2 15 .. 2 15 –1) |
shortint | Короткое целое | 1 байт | Есть | –128 .. 127 (–2 7 .. 2 7 –1) |
byte | Байт | 1 байт | Нет | 0 .. 255 (0 .. 2 8 –1) |
word | Слово | 2 байта | Нет | 0 .. 65 535 (0 .. 2 16 –1) |
longint | Длинное целое | 4 байта | Есть | –2 147 483 648 .. 2 147 483 647 |
(–2 31 .. 2 31 –1) |
В стандарте Паскаля из целых типов определен только тип integer .
Вещественные типы
Вещественные типы данных хранятся в памяти компьютера иначе, чем целые . Внутреннее представление вещественного числа состоит из двух частей — мантиссы и порядка, и каждая часть имеет знак. Например, число 0,031 представляется в виде 0,31*10 -1 , и в памяти хранится мантисса 31 и порядок -1 (для наглядности мы пренебрегли тем, что данные на самом деле представляются в двоичной системе счисления и несколько сложнее). Существует несколько вещественных типов, различающихся точностью и диапазоном представления данных (табл. 2). Точность числа определяется длиной мантиссы, а диапазон — длиной порядка.
Какие типы данных существуют в базе данных Microsoft Access
Табл. 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 | e x — экспонента |
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 . Арифметическое выражение — это правило выполнения действий над числовыми величинами. В выражении участвуют операнды, объединенные знаками операций. Операндами выражения могут быть константы, переменные и вызовы функций.
Операции выполняются в определенном порядке в соответствии с приоритетами, как и в математике. Для изменения порядка выполнения операций используются круглые скобки, уровень их вложенности практически не ограничен. Одна константа или одна переменная – простейшая форма арифметического выражения. Например, запишем по правилам Паскаля следующее математическое выражение: 2 a 0,5sin( x y ) . 0,2 c 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) . Например, x 3 следует записать на Паскале как x*x*x или, использую стандартную функцию, sqr(x)*x . Большие степени следует вычислять умножением в цикле (циклы будут изучены в следующих лабораторных работах).
Источник: studfile.net
Основные понятия языка
Данные, с которыми работает программа, хранятся в оперативной памяти. Компилятору необходимо точно знать, сколько места они занимают, как именно закодированы и какие действия с ними можно выполнять. Все это задается при описании данных с помощью типа. Тип данных однозначно определяет:
- внутреннее представление данных, а следовательно и множество их возможных значений;
- допустимые действия над данными (операции и функции).
Например, целые и вещественные числа, даже если они занимают одинаковый объем памяти, имеют совершенно разные диапазоны возможных значений; целые числа можно умножать друг на друга, а, например, символы — нельзя. Каждое выражение в программе имеет определенный тип. Компилятор использует информацию о типе при проверке допустимости описанных в программе действий.
Классификация типов
Рассмотрим классификацию типов в таблица 1.2.
Логические | |||
Целые | |||
Вещественные | Перечисляемый | Массивы | Файлы |
Символьный | Интервальный | Строки | Процедурные типы |
Строковый | Адресные | Записи | Объекты |
Адресный | Множества | ||
Файловые |
Стандартные типы не требуют предварительного определения. Для каждого типа существует ключевое слово, которое используется при описании переменных, констант и т. д. Если же тип данных определяет сам программист, он описывает его характеристики и дает ему имя, которое затем применяется точно так же, как имена стандартных типов. Описание собственного типа данных должно задавать всю информацию, необходимую для его использования: внутреннее представление и допустимые действия.
ПРИМЕЧАНИЕ Типы, выделенные в таблица 1.2 полужирным шрифтом, объединяются термином ‘порядковые’. Этот термин рассмотрен далее в этой лекции.
Стандартные типы данных
Логические типы
Внутреннее представление. Основной логический тип данных Паскаля называется boolean . Величины этого типа занимают в памяти 1 байт и могут принимать всего два значения: true (истина) или false (ложь). Внутреннее представление значения false — 0 (нуль), значения true — 1.
Операции. К величинам логического типа применяются логические операции and , or , xor и not ( таблица 1.3). Для наглядности вместо значения false в таблице используется 0, а вместо true — 1.
1 | |||||
1 | 1 | 1 | 1 | ||
1 | 1 | 1 | |||
1 | 1 | 1 | 1 |
Операция and называется ‘ логическое И ‘, или логическое умножение. Ее результат имеет значение true , только если оба операнда имеют значение true .
Результат операции or ( логическое ИЛИ, логическое сложение) имеет значение true , если хотя бы один из операндов имеет значение true . Например, false or true true , true or true true .
Операция xor — так называемое исключающее ИЛИ, или операция неравнозначности. Ее результат истинен, когда значения операндов не совпадают.
Логическое отрицание not является унарной операцией, то есть имеет один операнд, который и инвертирует. Например, not true даст в результате false .
Величины логического типа можно сравнивать между собой с помощью операций отношения, перечисленных в таблица 1.4. Результат этих операций имеет логический тип.
Больше | > | Меньше или равно | |
Больше или равно | >= | Равно | = |
Меньше | Не равно | <> |
Целые типы
Внутреннее представление. Целые числа представляются в компьютере в двоичной системе счисления. В Паскале определены несколько целых типов данных, отличающиеся длиной и наличием знака: старший двоичный разряд либо воспринимается как знаковый, либо является обычным разрядом числа ( таблица 1.5). Внутреннее представление определяет диапазоны допустимых значений величин (от нулей до единиц во всех двоичных разрядах).
integer | Целое | 2 байта | Есть | –32 768 .. 32 767 (–2 15 .. 2 15 –1) |
shortint | Короткое целое | 1 байт | Есть | –128 .. 127 (–2 7 .. 2 7 –1) |
byte | Байт | 1 байт | Нет | 0 .. 255 (0 .. 2 8 –1) |
word | Слово | 2 байта | Нет | 0 .. 65 535 (0 .. 2 16 –1) |
longint | Длинное целое | 4 байта | Есть | –2 147 483 648 .. 2 147 483 647 (–2 31 .. 2 31 –1) |
Операции.С целыми величинами можно выполнять арифметические операции ( таблица 1.6). Результат их выполнения всегда целый (при делении дробная часть отбрасывается).
Сложение | + | Деление | div |
Вычитание | – | Остаток от деления | mod |
Умножение | * |
К целым величинам можно также применять операции отношения, а также поразрядные операции and , or , xor и not . При выполнении этих операций каждая величина представляется как совокупность двоичных разрядов. Действие выполняется над каждой парой соответствующих разрядов операндов: первый разряд с первым, второй — со вторым, и т. д. Например, результатом операции 3 and 2 будет 2, поскольку двоичное представление числа 3 — 11, числа 2 — 10.
Для работы с целыми величинами предназначены также операции сдвига влево shl и вправо shr . Слева от знака операции указывается, с какой величиной будет выполняться операция, а справа — на какое число двоичных разрядов требуется сдвинуть величину. Например, результатом операции 12 shr 2 будет значение 3, а выполнив операцию 12 shl 1 , то есть сдвинув это число влево на 1 разряд, получим 24. Освободившиеся при сдвиге влево разряды заполняются нулями, а при сдвиге вправо — знаковым разрядом.
Стандартные функции и процедуры.К целым величинам можно применять стандартные функции и процедуры, перечисленные в таблица 1.7 (в тригонометрических функциях угол задается в радианах).
inc(x) — увеличить х на 1 inc(x, 3) — увеличить х на 3
dec(x) — уменьшить х на 1 dec (x, 3) — уменьшить х на 3
Источник: intuit.ru
Типы данных в языке программирования Паскаль
Любая программа является совокупностью данных и алгоритмов их обработки, записанных с помощью операторов. Данные во время работы программы хранятся в оперативной памяти. Очевидно, исполнителю необходимы сведения о том, как они хранятся, какие действия над ними можно выполнять.
Тип данных, задаваемый при их описании, однозначно определяет форму внутреннего представления, диапазон допустимых значений и множество возможных операций.
Рассмотрим классификацию типов данных, придерживаясь систематизации, принятой в PascalABC.Net.
Простые типы
К простым типам в PascalABC.Net относят целые и вещественные типы, логический, символьный, перечислимый и диапазонный тип. Все простые типы за исключением вещественного называются порядковыми типами.
Целые типы
Определены несколько целых типов данных (см. Таблица 1), отличающихся диапазоном допустимых значений и наличием знака: старший двоичный разряд воспринимается как знаковый (для отрицательных чисел), либо как обычный разряд числа.
Таблица 1. Целые типы данных
Вещественные типы
Существует несколько вещественных типов данных, которые отличаются точностью и диапазоном представления (см. Таблица 2). Точность вещественного числа определяется длиной мантиссы, а диапазон значений – длиной порядка.
Таблица 2. Вещественные типы данных
Символьный тип
Символьный тип служит для представления элементов из допустимого набора (для реализации PascalABC.Net — кодировка Unicode). Для обозначения типа данных используется ключевое слово char . Под каждый символ в PascalABC.Net отводится 2 байта (в других реализациях языка Паскаль отводится 1 байт, поскольку в качестве элементов набора используется расширенная таблица ASCII).
Логический тип
Для обозначения логического типа используется ключевое слово boolean . Множество значений этого типа включает два значения: false (ложь) и true (истина). Под величину логического типа отводится в памяти 1 байт.
Перечисляемый тип
Часто при написании программ возникает необходимость использования связанных между собой именованных констант, имеющих различные значения (например, дни недели, месяцы в году и т. д.). В этом случае удобно воспользоваться перечисляемым типом данных, возможные значения которого задаются упорядоченным набором констант.
type typeName = (value1, value2, . valuen);
Диапазонный тип
Диапазонный (интервальный) тип применяется в случае, если необходимо использовать подмножество значений целого, символьного или перечислимого типа.
- var
- range: -100..100;
- intCh: ‘a’..’z’;
Тип, на основе которого строится подмножество, называется базовым. Занимаемое место в памяти машины значениями диапазонного типа определяется используемым базовым типом.
Структурированные типы
К структурированным типам в PascalABC.NET относят массивы, записи, множества и файлы. Эти типы данных будут рассматриваться далее в соответствующих уроках.
Источник: informatics-lesson.ru