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

Понятие типа является одним из фундаментальных понятий любого языка программирования. Объекты (константы , переменные , функции, выражения), которыми оперирует программа, относятся к определенному типу.

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

Например , значения 1 и 2 относятся к целочисленному типу , их можно складывать, умножать и выполнять другие арифметические операции . Значения «монитор» и «Паскаль» носят лингвистический характер, они имеют свой набор допустимых операций. В большинстве широкоупотребительных языков могут использоваться только строго определенные, заранее известные типы. Pascal , наряду со стандартными типами, имеющимися в других языках высокого уровня, позволяет программисту образовывать собственные типы.

Все допустимые в языке Паскаль типы подразделяются на две большие группы: простые и сложные (структурированные).

Тип Диапазон Мантисса, знаков Требуемая память (байт)
REAL 2.9*10Е-39..1.7*10Е38 11-12
SINGLE 1.5*10Е-45..3.4*10Е38 7-8
DOUBLE 5.0*10Е-324..1.7*10Е308 15-16
EXTENDED 1.9*10Е-4951..1.1*10Е4932 19-20
COMP -2Е+63+1..2Е+63-1 10-20

Эффективное использование типов SINGLE, DOUBLE, EXTEND, COMP возможно только при включенной директиве {$N+}. По умолчанию она находится в выключенном состоянии. Для решения инженерно-экономических задач достаточно значений типа REAL.

Пример

Var Res, Summa, Itog: real;

Булевский тип данных описывается идентификатором BOOLEAN. Переменные и константы этого типа могут принимать только одно из двух значений: TRUE (истина) или FALSE (ложь).

Пример

Var Sel1, Sel2: boolean;

A,B,C,D: boolean;

Выражения булевского типа занимают в памяти 1 байт и используются в логических выражениях и выражениях отношения, а также для управления порядком выполнения операторов программы.

Литерный (символьный) тип описывается стандартным идентификатором CHAR. Константы и переменные этого типа могут принимать одно из значений кодовой таблицы ASCII. Значение константы или переменной этого типа заключается в апострофы.

Например , Var Bukva, Znak, Simvol: char;

Bukva:=’A’; Znak:=’+’; Simvol:=’!’

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

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

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

Формат

Type <имя типа>=(<значение1, значение2, ..., значениеN>);

Var <идентификатор, ...>: < имя типа>;

Пример

Type Season =(Spring, Summer, Autumn, Winter);

Var S1, S2: Season;

Autumn: (September, October, Nowember);

В данном примере приведен явно описанный тип данных пользователя Season. Определены их значения - обозначения времен года. Переменные S1 и S2 могут принимать только одно из перечисленных значений. Попытка присвоить им любое другое значение вызовет программное прерывание . Третий тип перечисления - анонимный (не имеет имени) и задается перечислением значений в разделе Var. Autumn является переменной этого типа и может принимать значения September, October, Nowember. Таким образом, может быть задан любой тип, но это не всегда приемлемо. Первый способ, безусловно, более понятен и больше соответствует характеру языка Pascal.

Интервальный тип позволяет задавать две константы, определяющие границы диапазона значений для данной переменной. Компилятор при каждой операции с переменной интервального типа генерирует подпрограммы проверки, определяющие, остается ли значение переменной внутри установленного для нее диапазона. Обе константы должны принадлежать одному из стандартных типов, кроме вещественного. Значение первой константы должно быть обязательно меньше значения второй.

Формат

Type <имя типа> = <константа1> .. <константа2>;

Var <идентификатор>: < имя типа>;

Пример

Type Days = 1.. 31;

Var Work_d, Free_d: Days;

В этом примере переменные Work_d, Free_d имеют тип Days и могут принимать любые значения из диапазона 1 . . 31.

Выход из диапазона вызывает программное прерывание.

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

Const Min = 1; Max = 31;

Type Days = Min .. Max;

Var Work_d, Free_d: Days;

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

строка - последовательность символов, заключенная в апострофы;

массив - структурированный тип данных, состоящий из фиксированного количества элементов одного и того же типа, доступ к которым осуществляется по индексу;

множество - набор выбранных по какому-либо признаку или группе признаков объектов, которые можно рассматривать как единое целое;

запись - совокупность фиксированного числа компонентов разного типа;

файл - последовательность компонентов одного типа и одной длины.

Еще двум структурированным типам - процедурному и типу object (объектному) - трудно поставить в соответствие данные в обычном представлении.

Рисунок 1 - Набор основных типов языка Паскаль

На занятии рассматриваются основные стандартные типы данных в Паскаль, понятие переменной и константы; объясняется, как работать с арифметическими операциями

Паскаль — это типизированный язык программирования. Это означает, что переменные, в которых хранятся данные, имеют определенный тип данных. Т.е. программе напрямую надо указать, какие данные могут храниться в той или иной переменной: текстовые данные, числовые данные, если числовые — то целочисленные или дробные, и т.п. Это необходимо в первую очередь для того чтобы компьютер «знал», какие операции можно выполнять с этими переменными и как правильно их выполнять.

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

Рассмотрим наиболее распространенные в Pascal типы данных.

Целочисленные типы данных в Паскаль

Тип Диапазон Требуемая память (байт)
byte 0..255 1
shortint -128..127 1
integer -32768.. 32767 2
word 0..65535 2
longint -2147483648..2147483647 4

Нужно иметь в виду, что при написании программ в паскале integer (в переводе с англ. целое) является наиболее часто используемым, так как диапазон значений наиболее востребуем. Если необходим более широкий диапазон, используется longint (long integer, в переводе с англ. длинное целое). Тип byte в Паскале используется, когда нет необходимости работать с отрицательными значениями, то же самое касается и типа word (только диапазон значений здесь значительно больше).

Примеры того, как описываются (объявляются) переменные в Паскале:

program a1; var x,y:integer; {целочисленный тип} myname:string; {строковый тип} begin x:=1; y:=x+16; myname:="Петр"; writeln ("имя: ",myname, ", возраст: ", y) end.

Результат:
имя: Петр, возраст: 17

Комментарии в Паскале

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

Задача 3. Население Москвы равняется а=9000000 жителей. Население Нью-Васюков равняется b=1000 жителей. Напишите программу, которая определяет разницу в числе жителей между двумя городами. Используйте переменные величины

Вещественные типы данных в Паскаль

Вещественные числа в Паскале и вообще в программировании — это название дробных чисел.

Тип Диапазон Требуемая память (байт)
real 2.9 * 10E-39 .. 1.7 * 10E38 6
single 1.5 * 10 E-45 .. 3.4 * 10E38 4
double 5 * 10E-324 .. 1.7 * 10E308 8
extended 1.9 * 10E-4951 .. 1.1 * 10E4932 10

Тип real в Паскале — наиболее часто используемый из вещественных типов.

Выше были представлены простые типы данных в Паскаль, к которым относятся:

  • Порядковые
  • Целые
  • Логические
  • Символьные
  • Перечисляемые
  • Интервальные
  • Вещественные

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

  • в формате используется либо одно число, означающее число позиций, отводимых на это число в экспоненциальной форме;
  • p:=1234.6789; Writeln(p:6:2); {1234.68}

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

    Константы в Паскале

    Зачастую в программе заранее известно, что переменная будет принимать какое-то конкретное значение и не менять его на протяжении выполнения всей программы. В таком случае необходимо использовать константу.

    Объявление константы в Паскале происходит до объявления переменных (до служебного слова var) и выглядит следующим образом:

    Пример описания константы в Паскале:

    1 2 3 4 5 6 const x= 17 ; var myname: string ; begin myname: = "Петр" ; writeln ("имя: " , myname, ", возраст: " , х) end .

    const x=17; var myname:string; begin myname:="Петр"; writeln ("имя: ",myname, ", возраст: ", х) end.

    «Красивый» вывод целых и вещественных чисел

    Для того чтобы после вывода значений переменных оставались отступы, чтобы значения не «сливались» друг с другом, принято через двоеточие указывать какое количество символов нужно предусмотреть для вывода значения:


    Арифметические операции в Паскале

    Порядок выполнения операций

    1. вычисление выражений в скобках;
    2. умножение, деление, div, mod слева направо;
    3. сложение и вычитание слева направо.

    Стандартные арифметические процедуры и функции Pascal

    Здесь стоит более подробно остановиться на некоторых арифметических операциях.

    • Операция inc в Паскале, произносимая как инкремент, это стандартная процедура pascal, которая обозначает увеличение на единицу.
    • Пример операции inc:

      x:=1; inc(x); {Увеличивает x на 1, т.е. x=2} writeln (х)

      Более сложное использование процедуры inc:
      Inc(x,n) где x — порядкового типа, n — целого типа; процедура inc увеличивает x на n.

    • Аналогично работает процедура Dec в Паскале: Dec(x) — уменьшает x на 1 (декремент) или Dec(x,n) — уменьшает x на n.
    • Оператор abs представляет собой модуль числа. Работает следующим образом:
    • a: =- 9 ; b: = abs (a) ; { b = 9}

      a:=-9; b:=abs(a); { b = 9}

    • Оператор div в паскале является часто используемым, так как целый ряд задач связан с действием деление нацело.
    • Остаток от деления или оператор mod в pascal тоже незаменим при решении ряда задач.
    • Заслуживающей внимания является стандартная функция odd Паскаля, которая определяет, является ли целое число нечетным. Т. е. возвращает true (истина) для нечетных чисел, false (ложь) для четных чисел.
    • Пример использования функции odd:

      var x:integer; begin x:=3; writeln(sqr(x)); {ответ 9} end.

    • Операция возведение в степень в Паскале отсутствует как таковая. Но для того чтобы возвести в степень число можно использовать функцию exp .
    • Формула такая: exp(ln(a)*n) , где а — число, n — степень (а>0).

      Однако в компиляторе pascal abc возведение в степень осуществляется значительно проще:

      var x:integer; begin x:=9; writeln(sqrt(x)); {ответ 3} end.

    Задача 4. Известны размеры спичечной коробки: высота — 12.41 см., ширина — 8 см., толщина — 5 см. Вычислить площадь основания коробки и ее объем
    (S=ширина * толщина, V=площадь*высота)

    Задача 5. В зоопарке три слона и довольно много кроликов, причем количество кроликов часто меняется. Слону положено съедать в сутки сто морковок, а кролику — две. Каждое утро служитель зоопарка сообщает компьютеру количество кроликов. Компьютер в ответ на это должен сообщить служителю общее количество морковок, которые сегодня нужно скормить кроликам и слонам.

    Задача 6. Известно, что x кг конфет стоит a рублей. Определите, сколько стоит y кг этих конфет, а также, сколько килограмм конфет можно купить на k рублей. Все значения вводит пользователь.

    Любые данные – константы, переменные, значения функций характеризуются в Паскале типом данных.

    Определим понятие типа данных . Как уже известно, все объекты программы (переменные, константы и т.д.) должны быть описаны.

    Описания информируют транслятор, во-первых, о существовании используемых переменных и других объектов, во-вторых, указывают на свойства этих объектов. Например, описание переменной, значение которой является числом, указывает на свойства чисел. Формально числа могут быть целыми и вещественными (дробными). В Паскале, как и в других языках программирования, числа разделены на два типа: целые (зарезервированное слово integer) и вещественные (зарезервированное слово real).

    Выделение целых чисел в отдельный тип объясняется тем, что в вычислительной машине целые и вещественные числа представляются по-разному: целое число может быть представлено абсолютно точно, а вещественное – неизбежно с некоторой конечной погрешностью, которая определяется свойствами транслятора.

    Например, пусть переменная x имеет тип real и ее значение равно единице: x=1 . Соответствующее значение в памяти компьютера может быть и 0.999999999 , и 1.000000001 , и 1.000000000 . Но если переменная x будет объявлена как переменная целого типа, то единица в компьютере будет представлена абсолютно точно и переменная x не сможет принимать вещественные (дробные) значения – ведь она была описана как переменная целого типа.

    Таким образом, тип данных определяет:

    • внутреннее представление данных в памяти компьютера;
    • множество значений, которые могут принимать величины этого типа;
    • операции, которые могут выполняться над величинами этого типа.

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

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

    • стандартные (предопределенные) типы ;
    • типы, определяемые пользователем (пользовательские типы) .

    К стандартным типам Турбо Паскаль относят:

    • целый тип – integer ;
    • вещественный тип – real ;
    • символьный тип – char ;
    • логический тип – boolean ;
    • строковый тип – string ;
    • указательный тип – pointer ;
    • текстовый тип – text .

    Пользовательские типы данных представляют собой различные комбинации стандартных типов.

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

    • перечисляемый тип;
    • интервальный тип;
    • указательный тип;
    • структурированные типы;
    • процедурный тип.

    Замечание . Возможна и другая классификация типов данных, согласно которой типы делятся на простые и сложные.

    К простым типам относят: целый тип, вещественный тип, символьный тип, логический тип, перечислимый тип и интервальный тип.

    Сложный тип представляет собой различные комбинации простых типов (массивы, записи, множества, файлы и т.д.)

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

    Стандартный тип данных определен самим языком Паскаль. При использовании в программе стандартных типов достаточно указать подразделы необходимых типов (const , var) и далее описать используемые в программе константы и переменные. Необходимость использования подраздела Type отсутствует.

    Например, если в программе используются только переменные:

    i,j – integer (целые);

    x,y - real (вещественные);

    t,s - char (символьные);

    a,b – boolean (логические),

    то необходим только подраздел переменных – Var . Поэтому в описательной части программы объявления переменных записываются следующим образом:

    Целые типы

    Данные этого типа могут принимать только значения целых чисел. В компьютере значения целого типа представляются абсолютно точно. Если переменная отрицательная, то перед ней должен стоять знак «–», если переменная положительная, то знак «+» можно опустить. Данный тип необходим в том случае, когда какую-то величину нельзя представить приближенно – вещественным числом. Например, число людей, животных и т.д.

    Примеры записи значений целых чисел: 17, 0, 44789, -4, -127.

    Диапазон изменения данных целого типа, определяется пятью стандартными типами целых чисел и представлен в таблице:

    Тип Диапазон Размер в байтах
    Shortint -128...+128 1
    Integer -32768...32767 2
    Longint -2147483648...2147483647 4
    Byte 0...255 1
    Word 0...65535 2

    Последние два типа служат для представления только положительных чисел, а первые три как положительных, так и отрицательных чисел.

    В тексте программы или при вводе данных целого типа значения записываются без десятичной точки . Фактические значения переменной не должны превышать допустимых значений того типа (Shortint , Integer , Longint , Byte , Word), который был использован при описании переменной. Возможные превышения при вычислениях ни как не контролируются, что приведет к неверной работе программы.

    Пример использования переменной целого типа

    Var a:integer; b:word; c:byte; Begin a:=300; {a присвоено значение 300} b:=300; {b присвоено значение300} c:=200; {c присвоено значение200} a:=b+c; {a присвоено значение500} c:=b; {Ошибка! Переменная c может принимать значения не более 255. Здесь переменной c присваивается значение 500,что вызовет переполнение результата.} End.

    Вещественные типы

    Значения вещественных типов в компьютере представляются приближенно. Диапазон изменения данных вещественного типа определяется пятью стандартными типами: вещественный (Real), с одинарной точностью (Single), двойной точностью (Double), с повышенной точностью (Extended), сложный (Comp) и представлен в таблице:

    Тип Диапазон Число значащих цифр Размер в байтах
    Real 2.9E-39...1.7E+38 11-12 6
    Single 1.5E-45...3.4E+38 >7-8 4
    Double 5E-324...1.7E+308 15-16 8
    Extended 3.4E-4951...1.1E+4932 19-20 10
    Comp -2E+63+1...+2E+63-1 19-20 8

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

    Формат записи числа с фиксированной точкой совпадает с обычной математической записью десятичного числа с дробной частью. Дробная часть отделяется от целой части с помощью точки, например

    34.5, -4.0, 77.001, 100.56

    Формат записи с плавающей точкой применяется при записи очень больших или очень малых чисел. В этом формате число, стоящее перед символом «E», умножается на число 10 в степени, указанной после символа «E».

    1E-4 1*10-4
    3.4574E+3 3.4574*10+3
    4.51E+1 4.51*10+1

    Примеры чисел с плавающей точкой:

    Число Запись на Паскале
    0,0001 1E-4
    3457,4 34574E-1
    45,1 451E-1
    40000 4E+4
    124 0.124E+3
    124 1.24E+2
    124 12.4E+1
    124 1240E-1
    124 12400E-2

    В таблице с 5 по 9 строку показана запись одного и того же числа 124. Изменяя положение десятичной точки в мантиссе (точка «плывет», отсюда следует название «запись числа с плавающей точкой») и одновременно изменяя величину порядка, можно выбрать наиболее подходящую запись числа.

    Пример описания переменных вещественного типа.

    Символьный тип

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

    Символьный тип обозначается зарезервированным словом Char и предназначен для хранения одного символа. Данные символьного типа в памяти занимают один байт.

    Формат объявления символьной переменной:

    <имя переменной>: Char;

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

    Пример использования переменных символьного типа:

    Var c:char; {c – переменная символьного типа} Begin c:=’A’; {переменной c присваивается символ ’A’} c:=#65; {переменной c также присваивается символ A. Его ASCII код равен 65} c:=’5’; {переменной c присваивается символ 5, End. здесь 5 это уже не число}

    Логический тип

    Логический тип данных называют булевским по имени английского математика Джорджа Буля, создателя области математики – математической логики.

    Формат объявления переменной логического типа:

    <имя переменной>: boolean;

    Данные этого типа могут принимать только два значения:

    • True – истина;
    • False – ложь.

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

    Для сравнения данных предусмотрены следующие операции отношений:

    Пример использования операций отношения:

    отношение 5>3 , результат true (истина);

    отношение 5=3 , результат false (ложь).

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

    Var a,b:boolean; {a,b – переменные логического типа} Begin a:=Тrue; {переменной a присваивается значение «истина»} b:=false; {переменной b присваивается значение «ложь»} End.

    Константы

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

    Константу необходимо объявить в описательной части с помощью зарезервированного слова const.

    Формат объявления константы

    Const <имя константы>= <значение>;

    Если в программе используются несколько констант, допускается использование только одного ключевого слова Const , описание каждой константы заканчивается точкой с запятой. Блок констант заканчивается объявлением другого раздела или объявлением блока исполняемых операторов.

    Const {объявление раздела констант} year=2003; {константа целого типа, т.к. нет в записи десятичной точки} time=14.05; {константа вещественного типа} N=24; {константа целого типа, т.к. нет в записи десятичной точки} P=3.14; {константа вещественного типа} A=true; {константа логического типа} str1=’7’; {константа символьного типа} str2=’A’; {константа символьного типа} str3=’Turbo’; {константа строкового типа} Var {объявление раздела переменных} X,y:integer; {переменные целого типа}

    Пользовательские типы

    Из совокупности пользовательских типов рассмотрим только

    • перечисляемый тип;
    • интервальный тип.

    Эти два типа нам будут необходимы при изучении массивов.

    Перечисляемый тип

    Перечисляемый тип данных описывает новые типы данных, значения которых определяет сам программист. Перечисляемый тип задается перечислением тех значений, которые он может получать. Каждое значение именуется некоторым идентификатором и располагается в списке, обрамленном круглыми скобками. Перечисляемый тип относится к типам данных, определяемым пользователем, поэтому объявление этого типа начинается зарезервированным словом TYPE .

    Формат перечисляемого типа:

    <имя типа>= (константа1, константа2,..., константаN);

    где
    константа1 , константа2 ,..., константаN – упорядоченный набор значений идентификаторов, рассматриваемых как константы.

    Пример описания перечисляемого типа:

    Type ball=(one, two, three, four, five); var t:ball;

    Здесь ball – имя перечисляемого типа; one , two , three , four , five – константы; t – переменная, которая может принимать любое значение констант.

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

    • константами числового типа: 1, 2, 3, 4 и т. д;
    • константами символьного типа: "a", "s", "1", "3" и т. д.;
    • константами строкового типа: "first", "second" и т.д.

    Кроме того, к значениям этого типа не применимы арифметические операции и стандартные процедуры ввода и вывода Read , Write .

    Пример использования переменных перечисляемого типа:

    Type days = (Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday); Var day: days; begin if day = Sunday then writeln(‘Сегодня Воскресенье!’); End.

    Элементы, входящие в определение перечисляемого типа, считаются упорядоченными в той последовательности, в которой они перечисляются. Нумерация начинается с нуля. Поэтому в приведенном примере дни недели имеют следующие порядковые номера

    Для программного определения порядкового номера используется функция Ord() .

    В нашем примере порядковые номера равны:

    Ord(Monday) = 0;

    Ord(Saturday) = 5;

    Ord(Sunday) = 6.

    Интервальный тип

    Если какая-то переменная принимает не все значения своего типа, а только значения, содержащиеся в некотором диапазоне, то такой тип данных называется интервальным типом. Часто интервальный тип называют ограниченным типом и типом-диапазоном. Интервальный тип задается границами своих значений:

    <минимальное значение>..<максимальное значение>

    • два символа «..» рассматриваются как один символ, поэтому между ними недопустимы пробелы;
    • левая граница диапазона не должна превышать его правую границу.

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

    Пример описания интервального типа:

    Type digit = 1..10; month = 1..31; lat = ’A’..’Z’;

    Данные - это общее понятие для всего того, с чем оперирует вычислительная машина. Любой тип данных определяет множество значений, которые может принимать та или иная переменная, и те операции, которые можно к ним применять.С каждой встречающейся в программе переменной должен быть сопоставлен один и только один тип.

    В Паскале существуют простые типы двух видов: ординальные типы и вещественный тип. Ординальный тип либо определяется программистом (перечисляемый тип или диапазонный), либо обозначается именем одного из трех предописанных ординальных типов: Boolean, Integer или Char . Вещественный тип обозначается именем предописанного типа Real .

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

    Диапазонный (ограниченный) тип задается с помощью минимального и максимального значений, относящихся к предварительно описанному ординальному типу. Так порождается новый ординальный тип.

    Ординальные типы данных

    Ординальный тип данных описывает конечное и упорядоченное множество значений. Эти значения отображаются на последовательность порядковых номеров 0,1,2,...; исключение делается лишь для целых ординальных чисел, которые отображаются сами на себя. Каждый ординальный тип имеет минимальное и максимальное значение. Для всех значений, кроме минимального, существует предшествующее значение, а для всех значений, кроме максимального - последущее.

    Предописанные функции succ, pred, ord воспринимают аргументы любого из ординальных типов:
    succ(X) - дает следующее за X ординальное значение
    pred(X) - дает предшествующее X ординальное значение
    ord(X) - дает ординальный номер для X

    Для всех ординальных типов существуют операции отношения = , = и > , причем предполагается, что оба операнда одного и того же типа.

    Логический тип (Boolean)

    Логическое значение - одно из двух истиностных значений, обозначаемых предопределенными именами false и true .

    Существуют следующие логические операции, дающие логическое значение при применении их к логическим операндам:
    and - логическое И
    or - логическое ИЛИ
    not - логическое НЕ

    Также любая из операций отношения (= , = , > , in) поставляет логический результат.

    Кроме того логический тип определен так, что false

    Существуют и предописанные логические функции (т.е функции, дающие логический результат):
    odd(F) - true, если целое F-нечетное и результат false, если F-четное
    eoln(F) - проверка на конец строки
    eof(F) - проверка на конец файла

    Целый тип (Integer)

    Тип integer включает в себя множество целых чисел.

    При работе с целыми операндами следующие арифметические операции дают целые значения:
    * - умножение
    div - целая часть от деления
    mod - остаток от деления
    + - сложение
    - - вычитание

    В Паскале существует также предописанная константа с именем MaxInt , которая содержит максимальное значение целого типа Integer и равна 32767

    Целый результат дают и четыре важные предописанные функции:
    abs(I) - абсолютное значение целого значения I
    sgr(I) - целое значение I, возведенное в квадрат при условии, что I trunc(R) - выдает целую часть вещественного числа R
    round(R) - выдает округленное целое. При этом: для R>0 означает trunc(R+0.5) , а для R

    Если I - целое значение, то:
    succ(I) - дает следующее целое значение (I+1)
    pred(I) - дает предыдущее целое значение (I-1)

    Символьный тип (Char)

    Значениями типа Char являются элементы конечного и упорядоченного множества символов. Значения такого типа обозначаются одним символом, заключенным в одни кавычки (апострофы). Если нужен сам апостроф, то он пишется дважды.
    Примеры: "*" "G" "3" """" "X"

      Для типа Char справедливы следующие минимальные допущения:
    1. Десятичные цифры от 0 до 9 упорядочены в соответствии с их числовыми значениями и следуют одна за другой (например, succ("5") = "6").
    2. Могут существовать прописные буквы от "A" до "Z"; если это так, то они упорядочены в алфавитном порядке, но не обязательно следуют одна за другой (например, "A"
    3. Могут существовать строчные буквы от "a" до "z"; если это так, то они упорядочены в алфавитном порядке, но не обязательно следуют одна за другой (например, "a"

    Для отображения заданного множества символов на порядковые номера и обратно существуют две предописанные функции:
    ord(C) - дает порядковый номер символа С в упомянутом упорядоченном множестве символов
    chr(I) - дает символ с порядковым номером I

    Для аргументов типа Char предописанные функции pred и succ могут быть определены таким образом:
    pred(C) = chr(ord(C)-I)
    succ(C) = chr(ord(C)+I)

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

    Вещественный тип (Real)

    Значениями вещественного типа являются элементы определяемого реализацией подмножества вещественных чисел.

    Все операции над величинами вещественного типа - приближенные, их точность определяется реализацией (машиной), с которой вы имеете дело. Вещественный тип относится к простому типу, это не ординальный тип. У вещественных значений нет ординального номера и для любого из них не существует предшествующего и следующего значений.

    Если хотя бы один из операндов - вещественного типа (другой может быть и целым), следующие операции дают вещественный результат:
    * - умножение
    / - деление (оба операнда могут быть целыми, но результат всегда вещественный)
    + - сложение
    - - вычитание

    Существуют предописанные функции, дающие вещественный результат при вещественном аргументе:
    abs(R) - абсолютное значение R
    sqr(R) - R в квадрате, если результат не выходит за диапазон вещественных чисел

    А эти предописанные функции дают вещественный результат при целом или вещественном аргументе:
    sin(X) - дает синус Х; Х выражено в радианах
    cos(X) - дает косинус Х; Х выражено в радианах
    arctan(X) - дает выраженное в радианах значение арктангенса от Х
    ln(X) - дает значение натурального (с основанием е) логарифма для Х, Х>0
    exp(X) - дает значение экспоненциальной функции (т.е в степени Х)
    sqrt(X) - дает значение корня квадратного Х, Х>=0

    Предупреждение. К вещественным аргументам нельзя применять функции pred, succ Нельзя использовать значения вещественного типа при индексировании массивов, для управления в цикле с параметром, для определения базового типа множеств, для индексирования в операторе варианта.