Простые типы данных — 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)) * Exp(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. Вещественные типы различаются диапазоном и точностью связанных с ними значений

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

ТипДиапазонКоличество байт
Real2.9×10Е-39 до 1.7×10Е 386
Single1.5×10Е-45 до 3.4×10Е 384
Double5.0×10Е-324 до 1.7×10Е 3088
Extended3.4×10Е-4932 до 1.1×10Е 493210

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

  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) — определяет порядковый номер символа Х.

Пример:

ord(‘a’)=97.

  1. CHR(X) — определяет символ по номеру.

Пример:

chr(97)=’a’.

  1. PRED(X) — выдает символ, стоящий перед символом Х.

Пример:

pred(‘B’)=’A’.

  1. SUCC(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';