При описании переменной необходимо указать ее тип. Тип переменной описывает набор значений, которые она может принимать, и действия, которые могут быть над ней выполнены. Описание типа определяет идентификатор, который обозначает тип. В программе описание переменной задается следующим образом:
var список переменных: тип;
Простые типы делятся на стандартные (порядковые) и перечисляемые (ограниченные).
Стандартные типы
Язык Pascal имеет четыре встроенных стандартных типа:
- integer (целочисленный)
- real (вещественный)
- boolean (логический)
- char (символьный)
1.Целочисленный тип (integer).
В Pascal имеются следующие целочисленные типы:
- shortint (короткое целое)
- integer (целое)
- longint (длинное целое)
- byte (число длиной в байт)
- word (число длиной в слово)
Каждый тип обозначает определенное подмножество целых чисел, как это показано в следующей таблице.
Тип данных | Диапазон | Количество байт |
---|---|---|
shortint | -128 ..+127 | 1 |
integer | -32768 .. 32767 | 2 |
longint | -2147483648 +2147483647 | 4 |
byte | 0 .. 255 | 1 |
word | 0 .. 65535 | 4 |
Описываются переменные целого типа следующим образом:
var а,р,n:integer;
Арифметические действия над операндами целочисленного типа осуществляются в соответствии со следующими правилами:
- Тип целой константы представляет собой встроенный целочисленный тип с наименьшим диапазоном, включающим значение этой целой константы.
- В случае бинарной операции (операции, использующей два операнда), оба операнда преобразуются к их общему типу перед тем, как над ними совершается действие. Общим типом является встроенный целочисленный тип с наименьшим диапазоном, включающим все возможные значения обоих типов. Например, общим типом для целого и целого длиной в байт является целое, а общим типом для целого и целого длиной в слово является длинное целое. Действие выполняется в соответствии с точностью общего типа и типом результата является общий тип.
- Выражение справа в операторе присваивания вычисляется независимо от размера переменной слева.
Операция | Описание |
---|---|
+ | сложение |
— | вычитание |
* | умножение |
/ | деление |
div | после деления отбрасывает дробную часть |
mod | получение целого остатка после деления |
В Pascal есть операции целочисленного деления и нахождения остатка от деления. При выполнении целочисленного деления (операция div) остаток от деления отбрасывается.
//Например 15 div 3 = 5; 18 div 5 = 3; 123 div 10 = 12; 7 div 10 = 0;
С помощью операции mod можно найти остаток от деления одного целого числа на другое.
//Например 15 mod 3 = 0; 18 mod 5 = 3; 123 mod 10 = 3; 7 mod 10 = 7;
//Например а:=100; b:=60; c:=a div b; d:=a mod b;
результат: переменная c равна 1, а d равна 40.
При записи алгебраических выражений используют арифметические операции (сложение, умножение, вычитание, деление), функции Pascal, круглые скобки.
Порядок действий при вычислении значения выражения:
- вычисляются значения в скобках;
- вычисляются значения функций;
- выполняется унарные операции (унарный минус — смена знака);
- выполняются операции умножения и деления (в том числе целочисленного деления и нахождения остатка от деления);
- выполняются операции сложения и вычитания.
Встроенные математические функции языка Pascal
Математическая запись | Запись на Pascal | Назначение |
---|---|---|
cos x | cos(x) | Косинус x радиан |
sin x | sin(x) | Синус x радиан |
ex | exp(x) | Значение e в степени x |
[x] | trunc(x) | Целая часть числа x |
|x| | abs(x) | Модуль числа x |
x2 | sqr(x) | Квадрат числа x |
![]() | sqrt(x) | Квадратный корень из x |
{x} | frac(x) | Дробная часть x |
arctg x | arctan(x) | Арктангенс числа x |
ln x | ln(x) | Натуральный логарифм x |
p | Pi | Число p |
Возведение в степень (кроме возведения в квадрат и возведения в степень числа e) отсутствует. Для возведения в произвольную степень можно воспользоваться очевидным равенством: xy=ey ln x. Для возведения числа в натуральную степень можно написать собственную функцию. Например,
{Функция возведения вещественного числа X в натуральную степень N} Function Stepen(X : Real; N : Integer) : Real; Var I:Integer; St:Real; Begin St := 1; For I := 1 To N Do St := St * X; Stepen := St; End;
Другой способ получить натуральное значение z=xy, где x, y — натуральные, это сделать так: Z := Round(Exp(Y * Ln(X))).
Примечание. Интересной является задача получения степени любого целого числа (за исключением нуля), если основание степени — неотрицательное целое, без использования развилки. Одно из возможных решений :
(–1)*ord(odd(y)) * exp(y * ln(x)) + ord(odd(y+1)) * yxp(Y * ln(x))
Здесь Ord(K) — функция, возвращающая порядковый номер величины K в том или ином порядковом типе (в примере использовано свойство, что порядковый номер False равен 0, а порядковый номер True — 1).
2. Вещественный тип (real).
К вещественному типу относится подмножество вещественных чисел, которые могут быть представлены в формате с плавающей запятой с фиксированным числом цифр. Запись значения в формате с плавающей запятой обычно включает три значения — m, b и e — таким образом, что m*bе, где b всегда равен 10, а m и e являются целочисленными значениями в диапазоне вещественного типа. Эти значения m и e далее определяют диапазон и точность вещественного типа.
Имеется следующие виды вещественных типов: real, singlе, double, extended,comp. Вещественные типы различаются диапазоном и точностью связанных с ними значений. Тип comp может содержать только целые числа от -2 63 +1 до +263-1, но эти числа хранятся в вещественном формате, поэтому тип comp считается вещественным. С данными типа Comp можно обращаться так же, как с данными других вещественных типов, но дробная часть числа при этом автоматически отбрасывается.
Диапазон и десятичные цифры для вещественных типов
Тип | Диапазон | Точность | Количество байт |
Real | 2.9×10Е-39 до 1.7×10Е 38 | 11-12 | 6 |
Single | 1.5×10Е-45 до 3.4×10Е 38 | 7-8 | 4 |
Double | 5.0×10Е-324 до 1.7×10Е 308 | 15-16 | 8 |
Extended | 3.4×10Е-4932 до 1.1×10Е 4932 | 19-20 | 10 |
Comp | -9.2E-18 до 9.2E18 | 19-20 | 8 |
Операции совершаемые над вещественными числами:
- Все операции допустимые для целых чисел.
- SQRT(x)-корень квадратный из числа х.
- Тригонометрические функции:
- SIN(X);
- COS(X);
- ARCTAN(X).
- LN(X)-натуральный логарифм.
- EXP(X)-экспонента Х (ех).
- EXP(X*LN(A))-возведение в степень (Ах).
- Функции преобразования типов:
- TRUNC(X)-отбрасывает дробную часть
- ROUND(X)-округление.
Некоторые правила арифметических операций:
- Если в арифметическом действии встречаются числа типа real и integer, то результат будет иметь тип real.
- Все составные части выражения записываются в одну строку.
- Используются только круглые скобки.
- Нельзя подряд ставить два арифметических знака.
Описываются переменные вещественного типа следующим образом:
var список переменных: тип;
Например:
var d,g,k:real;
3. Символьный тип(char)
K типу char относится любой символ заключенный в апострофы. Для представления апострофа как символьную переменную, надо заключить его в апостроф:».
Каждый символ имеет свой код и номер. Порядковые номера цифр 0,1..9 упорядочены по возрастанию. Порядковые номера букв также упорядочены по возрастанию, но не обязательно следуют друг за другом.
К символьным данным применимы знаки сравнения:
> , < , >=, <=, <> . Например: 'A' < 'W'
Функции, которые применимы к символьным переменным:
- ord(x) — определяет порядковый номер символа x.
Пример: ord('a')=97.
- chr(x) — определяет символ по номеру.
Пример: chr(97)='a'.
- pred(x) — выдает символ, стоящий перед символом x.
Пример: pred('B')='A'.
- succ(x) — выдает символ, следующий после символа x.
Пример: succ('A')='B'.
Перечислимые типы
4. Перечислимый тип.
Перечислимый тип данных назван так потому, что задается в виде перечисления констант в строго определенном порядке и в строго определенном количестве. Перечислимый тип состоит из списка констант. Переменные этого типа могут принимать значение любой из этих констант. Описание перечислимого типа имеет вид:
Type имя типа=(список констант); Var имя переменной:имя типа;
где <список констант> — это особый вид констант, задаваемых через запятую и имеющих свой порядковый номер, начиная с 0.
Например:
type направление=(север, юг, запад, восток); месяц=(июнь,июль,август,январь); емкость=(ведро,бочка,канистра,бак); var поворот:направление; отъезд:месяц; объем:емкость;
или так:
var поворот:(свер, юг, запад, восток); отъезд:(июнь, июль, август, январь); объем:(ведро, бочка, канистра, бак);
Можно выполнить такие операторы присваивания:
поворот:=юг; отъезд:=август; объем:=бак;
но нельзя выполнять смешанные присваивания:
отъезд:=юг; объем:=август;
К переменным перечислимого типа применимы следующие функции:
1. ord — порядковый номер
2. pred — предшествующий элемент
3. succ — последующий элемент.
Пример: pred(бочка)=ведро; succ(юг)=запад; ord(июль)=1;
Переменные перечислимого типа можно сравнить, так как они упорядочены и пронумерованы. Так выражения:
север < юг, июнь < январь имеют значения TRUE, а юг>запад и бак<бочка значение FАLSE.
5. Ограниченный тип.
Если переменная принимает не все значения своего типа, а только в некотором диапазоне, то ее можно рассматривать как переменную ограниченного типа. Каждый ограниченный тип задается путем накладывания ограничения на базовые типы.
Описывается так:
type <имя типа>=константа1..константа2
При этом должны выполняться следующие правила:
- Обе ограниченные константы должны быть одного типа.
- В качестве базового типа можно использовать любой простой тип, кроме действительного(real).
- Начальные значение при определении ограниченного типа не должно быть больше конечного значения.
Пример:
type index=0..63; letter='a'..'z'; var char1,char2:letter; a,g:index;
Можно описывать сразу в разделе описания переменных:
var a,g:0..63; char1,char2:'a'..'z';