Простые типы данных — Pascal(Паскаль)

При описании переменной необходимо указать ее тип. Тип переменной описывает набор значений, которые она может принимать, и действия, которые могут быть над ней выполнены. Описание типа определяет идентификатор, который обозначает тип. В программе описание переменной задается следующим образом:

var
 список переменных: тип;

Простые типы делятся на стандартные (порядковые) и перечисляемые (ограниченные).

Стандартные типы

Язык Pascal имеет четыре встроенных стандартных типа:

  • integer (целочисленный)
  • real (вещественный)
  • boolean (логический)
  • char (символьный)

1.Целочисленный тип (integer).

В Pascal имеются следующие целочисленные типы:

  • shortint (короткое целое)
  • integer (целое)
  • longint (длинное целое)
  • byte (число длиной в байт)
  • word (число длиной в слово)

Каждый тип обозначает определенное подмножество целых чисел, как это показано в следующей таблице.

Тип данныхДиапазонКоличество байт
shortint-128 ..+1271
integer-32768 .. 327672
longint-2147483648 +21474836474
byte0 .. 2551
word0 .. 655354
Встроенные целочисленные типы

Описываются переменные целого типа следующим образом:

var
 а,р,n:integer;

Арифметические действия над операндами целочисленного типа осуществляются в соответствии со следующими правилами:

  1. Тип целой константы представляет собой встроенный целочисленный тип с наименьшим диапазоном, включающим значение этой целой константы.
  2. В случае бинарной операции (операции, использующей два операнда), оба операнда преобразуются к их общему типу перед тем, как над ними совершается действие. Общим типом является встроенный целочисленный тип с наименьшим диапазоном, включающим все возможные значения обоих типов. Например, общим типом для целого и целого длиной в байт является целое, а общим типом для целого и целого длиной в слово является длинное целое. Действие выполняется в соответствии с точностью общего типа и типом результата является общий тип.
  3. Выражение справа в операторе присваивания вычисляется независимо от размера переменной слева.
ОперацияОписание
+сложение
вычитание
*умножение
/деление
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, круглые скобки.

Порядок действий при вычислении значения выражения:

  1. вычисляются значения в скобках;
  2. вычисляются значения функций;
  3. выполняется унарные операции (унарный минус — смена знака);
  4. выполняются операции умножения и деления (в том числе целочисленного деления и нахождения остатка от деления);
  5. выполняются операции сложения и вычитания.

Встроенные математические функции языка Pascal

Математическая записьЗапись на PascalНазначение
cos xcos(x)Косинус x радиан
sin xsin(x)Синус x радиан
exexp(x)Значение e в степени x
[x]trunc(x)Целая часть числа x
|x|abs(x)Модуль числа x
x2sqr(x)Квадрат числа x
sqrt(x)Квадратный корень из x
{x}frac(x)Дробная часть x
arctg xarctan(x)Арктангенс числа x
ln xln(x)Натуральный логарифм x
pPiЧисло 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 можно обращаться так же, как с данными других вещественных типов, но дробная часть числа при этом автоматически отбрасывается.

Диапазон и десятичные цифры для вещественных типов

ТипДиапазонТочностьКоличество байт
Real2.9×10Е-39 до 1.7×10Е 3811-126
Single1.5×10Е-45 до 3.4×10Е 387-84
Double5.0×10Е-324 до 1.7×10Е 30815-168
Extended3.4×10Е-4932 до 1.1×10Е 493219-20 10
Comp-9.2E-18 до 9.2E1819-208

Операции совершаемые над вещественными числами:

  1. Все операции допустимые для целых чисел.
  2. SQRT(x)-корень квадратный из числа х.
  3. Тригонометрические функции:
    • SIN(X);
    • COS(X);
    • ARCTAN(X).
  4. LN(X)-натуральный логарифм.
  5. EXP(X)-экспонента Х (ех).
  6. EXP(X*LN(A))-возведение в степень (Ах).
  7. Функции преобразования типов:
    • TRUNC(X)-отбрасывает дробную часть
    • ROUND(X)-округление.

Некоторые правила арифметических операций:

  1. Если в арифметическом действии встречаются числа типа real и integer, то результат будет иметь тип real.
  2. Все составные части выражения записываются в одну строку.
  3. Используются только круглые скобки.
  4. Нельзя подряд ставить два арифметических знака.

Описываются переменные вещественного типа следующим образом:

var
 список переменных: тип;

Например:

 var
 d,g,k:real;

3. Символьный тип(char)

K типу char относится любой символ заключенный в апострофы. Для представления апострофа как символьную переменную, надо заключить его в апостроф:».

Каждый символ имеет свой код и номер. Порядковые номера цифр 0,1..9 упорядочены по возрастанию. Порядковые номера букв также упорядочены по возрастанию, но не обязательно следуют друг за другом.

К символьным данным применимы знаки сравнения:

> , < , >=, <=, <> .

Например: 'A' < 'W'

Функции, которые применимы к символьным переменным:

  1. ord(x) — определяет порядковый номер символа x.
Пример:

ord('a')=97.
  1. chr(x) — определяет символ по номеру.
Пример:

chr(97)='a'.
  1. pred(x) — выдает символ, стоящий перед символом x.
Пример:

pred('B')='A'.
  1. 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

При этом должны выполняться следующие правила:

  1. Обе ограниченные константы должны быть одного типа.
  2. В качестве базового типа можно использовать любой простой тип, кроме действительного(real).
  3. Начальные значение при определении ограниченного типа не должно быть больше конечного значения.

Пример:

type 
index=0..63;
letter='a'..'z';
var 
char1,char2:letter;
a,g:index;

Можно описывать сразу в разделе описания переменных:

var a,g:0..63;
char1,char2:'a'..'z';