При описании переменной необходимо указать ее тип. Тип переменной описывает набор значений, которые она может принимать, и действия, которые могут быть над ней выполнены. Описание типа определяет идентификатор, который обозначает тип. В программе описание переменной задается следующим образом:
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';