Типы данных

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

 
 

 

 


Каждый тип имеет свой идентификатор.

Идентификатор Длина, байт Диапазон (множество) значений
Целые типы
Integer -32768 ...32767
Byte 0…255
Word 0…65535
Shortint -128…127
Longint -2147483648 ...2147483647
Вещественные типы
Real 2,9×… 1,7× (11-12) ... 1,7-1038 (11 - 12)
Single 1,5×… 3,4× (7-8)
Double … 1,7× (15-16)
Extended 3,4×… 1,1× (19-20)
Логический тип
Boolean True, false
Символьный тип
Char Все символы кода ASCII

 

 

Описание переменных. Для всех переменных величин, используемых в программе, должны быть указаны их типы. Это делается в разделе переменных программы.

 

<Раздел переменных> Var <Описание переменных>

 

 

<Описание переменных> <Идентификатор> <Тип>

 

Пример раздела переменных программы:

Var m,n,k: Integer;

x,y,z: Real;

Symbol: Char;

Константы. Тип константы определяется по контексту, т.е. по форме ее записи в программе.

Целые десятичные константы записываются в обычной форме целого числа со знаком или без знака, например 25, -24712, 376.

Целые шестнадцатеричные константы записываются с префиксом $. Они должны находиться в диапазоне от $00000000 до SFFFFFFFF.

Вещественные константы с фиксированной точкой записываются в обычной форме десятичного числа с дробной частью. Разделитель целой и дробной части — точка, например: 56.346, 0.000055, -345678.0.

Вещественные константы с плавающей точкой имеют форму:

 

<мантисса>Е<порядок>

Здесь мантисса — целое или вещественное число с фиксированной точкой, порядок — целое число со знаком или без,

Например: 7Е-2 (7*10), 12.25Е6 (12,25*), 1Е-25 (10)

Символьная константа — любой символ алфавита, заключенный в апострофы, например, 'W, '!', '9'.

Логическая константа — одно из двух слов: true, false.

Строковая константа — строка символов, заключенная в апострофы, например Turbo Pascal', 'Ответ:', '35-45-79'. Максимальная длина — 255 символов.

Константе может быть поставлено в соответствие определенное имя. Назначение имени константе производится в разделе констант программы.

 

<Раздел констант> Const <Описание константы>

 

 

<Описание константы> <Индетификатор> <Константа>

 

Пример:

Const

Max=1000;

G=9.81;

Cod=’Ошибка’;

 

В дополнение к сказанному заметим, что в Турбо Паскале допустимо употребление типизированных констант. Типизированная константа аналогична переменной, которой задается начальное значение. Причем происходит это на этапе компиляции.

 

<Типизированная константа> <Индетификатор> <Тип> <Тип>

 

<Константа>

 

 

Пример:

Const NumberCard:Integer=1267;

Size:Real=12.67;

Symbol:Char = '*';

 

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

Идентификатор Тип Значение
True Boolean Истина
False Boolean Ложь
MaxInt Integer

 

Типы пользователя. Один из принципиальных моментов состоит в том, что пользователю разрешается определять свои типы данных. Типы пользователя всегда базируются на стандартных типах данных Паскаля.

 

<Раздел типов>

Type<описание типов>

 

<Описание типа>

<Имя типа> < тип>

 

 

Перечисляемый тип задается непосредственно перечислением всех значений, которые может принимать переменная данного типа.

 

<Перечисляемый тип> <идентификатор>

 

Определенное имя типа затем используется для описания переменных.

Например:

TypeGaz=(C,0,N,F);

Metal=(Fe,Co,Na,Сu,Zn);

Var Gl,G2,G3:Gaz;

Met1,Met2:Metal1;

Day:(Sun,Mon,Tue,Wed,Thu,Fri,Sat)

 

Здесь Gaz и Metal — имена перечисляемых типов, которые ставятся в соответствие переменным Gl, G2, G3 и Metl, Met2.

Переменной Day назначается перечисляемый тип, которому не присвоено имя.

 

Значения, входящие в перечисляемый тип, являются константами.

Действия над ними подчиняются правилам, применимым к константам. Каждое значение в перечисляемом типе занимает в памяти 2 байта. Поэтому число элементов не должно превышать 65535.

Перечисляемый тип — упорядоченное множество. Его элементы пронумерованы начиная от 0 в порядке следования в описании.

В программе, в которой присутствует данное выше описание, возможен такой фрагмент:

if Day=Sun thenWriteLn('Ура!Сегодня выходной!');

 

Интервальный тип задается как упорядоченное ограниченное подмножество некоторого порядкового типа.

 

<Описание типа>

<Константа> <Константа>

 

 

Порядковый номер первой константы не должен превышать номера второй константы в соответствующем базовом типе.

При исполнении программы автоматически контролируется принадлежность значений переменной интервального типа установленному диапазону. При выходе из диапазона исполнение программы прерывается.

Пример:

TypeNumbers=l..31;

Alf='A'..'Z';

VarData:Numbers;

Bukva:Alf;

 

К арифметическим типам данных относятся группы вещественных и целых типов. К ним применимы арифметические операции и операции отношений.

Операции над данными бывают унарными (применимые к одному операнду) и бинарными (применимые к двум операндам).

 

Знак Выражение Типы операндов Типы результатов операция
+ А+В R,R I,I I,R;R,I R I R Сложение
- А-В R,R I,I I,R;R,I R I R Вычитание
* А*В R,R I,I I,R;R,I R I R Умножение
/ А/В R,R I,I I,R;R,I R R R Вещественное деление
div А div B I,I I   Целое деление
mod А mod В I,I I Остаток от целого деления

 

 

К арифметическим величинам могут быть применены стандартные функции Паскаля.

Функция выступает как операнд в выражении. Например, в следующем операторе присваивания

 

X:=2* Sin (A) / Ln ( 3.5) + Cos ( C-D)

 

операндами являются три функции: sin, ln, cos. Их запись такая же, как в математике. Аргументы называются фактическими параметрами и являются в общем случае выражениями арифметического типа. Аргументы записываются в круглых скобках. Результат вычисления функции- величина соответствующего типа.

Описания математических стандартных функций Турбо Паскаля:

 

Обращение Тип аргумента Тип результата функция
Pi - R Число π= 3.1415926536 E +00
Abs (x) I,R I,R Модуль аргумента x
Arctan (x) I,R R Арктангенс x (радианы)
Cos (x) I,R R Косинус x (x в радианах)
Exp (x) I,R R e^x- экспонента
Frak (x) I,R R Дробная часть x
Int (x) I,R R Целая часть х
Ln (x) I,R R Натуральный логарифм х
Randon   R Псевдослучайное число в интервале [0,1)
Randon (x0 I I Псевдослучайное число в интервале [0,х)
Round (x) R I Округление до ближайшего целого
Sin (x) I,R R Синус х (х в радианах)
Sqr (x) I,R I,R Квадрат х
Sqrt (x) I,R R Корень квадратный из х
Trunc (x) R I Ближайшее целое, не превышающее х по модулю

Арифметическое выражениезадает порядок выполнения действий над числовыми величинами. Арифметические выражения содержат арифметические операции, функции, операнды, круглые скобки. Одна константа или одна переменная- простейшая форма арифметического выражения.

Например, запишем по правилам Паскаля следующее математическое выражение:

 

На Паскале это выглядит так:

(2*a + Sqrt (0.5*sin ( x+y )))/ (0.2*C-Ln(x-y))

Для того чтобы правильно записывать арифметические выражения, нужно соблюдать следующие правила:

1.Все символы пишутся в строчку на одном уровне. Поставляются все знаки операций (нельзя пропускать знак умножения).

2.Не допускаются два следующих подряд знака операций (нельзя A+-B;можно A+(-B)).

3.Операции с более высоким приоритетом выполняются раньше операций с меньшим приоритетом. Порядок убывания приоритетов:

· Вычисление функции;

· Унарная операция смены знака (-);

· *,/, div, mod;

· +,-.

4.Несколько записанных подряд операций одинакового приоритета выполняется с последовательно слева направо.

5.Часть выражения, заключенная в скобки, вычисляется в первую очередь. (например, (A+B)*(C-D)– умножение производится после сложения и вычитания.)

 

Не следует записывать выражений, не имеющих математического смысла. Например, деление на нуль, логарифм отрицательного числа и т.п.

 

 

Тема 2.2Операторы языка

 

 

Арифметический оператор присваиванияимеет структуру:

 

 

Запрос для значения переменных осуществляется с помощью операторов ввода. Сообщение о значении переменных и результаты арифметических вычислений реализуются с помощью операторов вывода.

Оператор ввода Readln (x1[,x2,x3,...]) - сначала идет имя процедуры Readln, затем имена переменных, которым будут присвоены значения. Их может быть несколько либо одно. Но необходимо помнить, что Readln после ввода каждой переменной требует переход на новую строку, иначе часть введенной строки отбрасывается.

Замечание: иногда Readln используют для организации ожидания до нажатия клавиши Enter. Это требуется, когда перед завершением программы необходимо просмотреть результаты ее работы.

Оператор вывода Writeln (['Текст пояснения ',]x1[,x2,x3,...]) - сначала идет имя процедуры Writeln, затем текст, имена переменных, арифметические выражения. Их может быть несколько либо одно имя. Но необходимо помнить, что Writeln переводит курсор на новую строку в отличии от Write. Арифметические выражения вычисляются, а затем выводятся. При выводе вещественных чисел необходимо форматирование, иначе они будут представлены в форме с плавающей запятой. Writeln(real2:5:2); Здесь переменная real2 выводится на экран ограниченная по ширине в 5 символов, а также с 2 знаками после запятой.

Например, В программе вычисляется площадь и периметр прямоугольника.

 

var
a , b : real;
begin
writeln('Введите сторону a прямоугольника');
readln(a);
writeln('Введите сторону b прямоугольника');
readln(b);
writeln('a=',a,' b=',b:6:4);
writeln('Площадь =',a*b:6:1);
writeln('Периметр =',2*(a+b):3);
end.