Пользовательские типы данных паскаль - IT Новости из мира ПК
Remkomplekty.ru

IT Новости из мира ПК
6 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

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

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

Для обработки ЭВМ данные представляются в виде величин и их совокупностей. С понятием величины связаны такая важная характеристика, как ее тип.

Тип определяет:

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

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

Иерархия типов в языке Паскаль такая:

  • Простые
    • Порядковые
      • Целые
      • Логические
      • Символьные
      • Перечисляемые
      • Интервальные
    • Вещественные
  • Структуированные
    • Массивы
    • Строки
    • Множества
    • Записи
    • Файлы
  • Указатели

Простые типы данных

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

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

Дополнительные сведения о типах данных..

Порядковые типы, выделяемые из группы простых типов, характеризуются следующими свойствами:

  • все возможные значения порядкового типа представляют собой ограниченное упорядоченное множество;
  • к любому порядковому типу может быть применена стандартная функция Ord, которая в качестве результата возвращает порядковый номер конкретного значения в данном типе;
  • к любому порядковому типу могут быть применены стандартные функции Pred и Succ, которые возвращают предыдущее и последующее значения соответственно;
  • к любому порядковому типу могут быть применены стандартные функции Low и High, которые возвращают наименьшее и наибольшее значения величин данного типа.

В языке Паскаль введены понятия эквивалентности и совместимости типов. Два типа Т1 и Т2 являются эквивалентными (идентичными), если выполняется одно из двух условий:

  • Т1 и Т2 представляют собой одно и то же имя типа;
  • тип Т2 описан с использованием типа Т1 с помощью равенства или последовательности равенств. Например:

Менее строгие ограничения накладываются на совместимость типов. Так, типы являются совместимыми, если:

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

В Турбо Паскаль ограничения на совместимость типов можно обойти с помощью приведения типов. Приведение типов позволяет рассматривать одну и ту же величину в памяти ЭВМ как принадлежащую разным типам. Для этого используется конструкция Имя_Типа(переменная или значение)

Напрмер, Integer(‘Z’) представляет собой значение кода символа ‘Z’ в двухбайтном представлении целого числа, а Byte(534) даст значение 22, поскольку целое число 534 имеет тип Word и занимает два байта, а тип Byte занимает один байт, и в процессе приведения старший байт будет отброшен.

Волгоградский государственный педагогический университет
Кафедра алгебры, геометрии и информатики

Язык программирования TurboPascal

Turbo Pascal. Типы данных

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

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

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

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

Pascal. Типы данных

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

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

По способу представления и обработки типы данных бывают:

  • простые
  • структурированные
  • указатели
  • объекты
  • процедуры

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

Целочисленный тип

Сюда входят несколько целочисленных типов, которые различаются диапазоном значений, количеством байт отведённых для их хранения и словом, с помощью которого объявляется тип.

Объявить целочисленную переменную можно в разделе Var, например:

Над переменными этой категории можно выполнять все арифметические и логические операции за исключением деления (/), для него нужен вещественный тип. Также могут быть применены некоторые стандартные функции и процедуры.

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

В Паскале бывают следующие вещественные типы данных:

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

ln(x) – натуральный логарифм;

sqrt(x) – квадратный корень;

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

Переменная, имеющая логический тип данных может принимать всего два значения: true (истина) и false (ложь). Здесь истине соответствует значение 1, а ложь тождественная нулю. Объявить булеву переменную можно так:

Над данными этого типа могут выполняться операции сравнения и логические операции: not , and, or, xor.

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

Символьный тип данных – это совокупность символов, используемых в том или ином компьютере. Переменная данного типа принимает значение одного из этих символов, занимает в памяти компьютера 1 байт. Слово Char определяет величину данного типа. Существует несколько способов записать символьную переменную (или константу):

  1. как одиночный символ, заключенный в апострофы: ‘W’, ‘V’, ‘п’;
  2. указав код символа, значение которого должно находиться в диапазоне от 0 до 255.
  3. при помощи конструкции ^K, где K – код управляющего символа. Значение K должно быть на 64 больше кода соответствующего управляющего символа.

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

Succ(x) — возвращает следующий символ;

Pred(x) — возвращает предыдущий символ;

Ord(x) — возвращает значение кода символа;

Chr(x) — возвращает значение символа по его коду;

UpCase(x) — переводит литеры из интервала ‘a’..’z’ в верхний регистр.

Для плодотворной работы с символьным типом рекомендую пользоваться таблицей ASCII.

Строковый тип

Строка в Паскале представляет собой последовательность символов заключенных в апострофы, и обозначается словом String. Число символов (длина строки) должно не превышать 255. Если длину строки не указывать, то она автоматически определиться в 255 символов. Общий вид объявления строковой переменной выглядит так:

Каждый символ в строке имеет свой индекс (номер). Индекс первого байта – 0, но в нем храниться не первый символ, а длина всей строки, из чего следует, что переменная этого типа будет занимать на 1 байт больше числа переменных в ней. Номер первого символа – 1, например, если мы имеем строку S=‘stroka’, то S[1]=s;. В одном из следующих уроков строковый тип данных будет рассмотрен подробнее.

Перечисляемый тип данных

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

Type Day=(Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday);

Переменная A может принимать лишь значения определенные в разделе Type. Также можно объявить переменную перечисляемого типа в разделе Var:

Var A: (Monday, Tuesday);

К данному типу применимы операции отношения, при этом заранее определенно, что Monday = .. ;

Pascal. Простые типы данных

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

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

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

Турбо-Паскаль имеет четыре встроенных стандартных типа: integer (целое), real (вещественное), boolean (логический) и char (символьный).

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

В Турбо-Паскале имеется пять встроенных целочисленных типов: shortint (короткое целое), integer (целое), longint (длинное целое), byte (длиной в байт) и word (длиной в слово). Каждый тип обозначает определенное подмножество целых чисел, как это показано в следующей Таблице.

Встроенные целочисленные типы.

Тип

Диапазон

Формат

8 битов со знаком

16 битов со знаком

32 бита со знаком

8 битов без знака

16 битов без знака

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

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

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

SQR — возведение в квадрат

DIV — после деления отбрасывает дробную часть

MOD — получение целого остатка после деления

ABS — модуль числа

RANDOM(X)-получение случайного числа от 0 до Х

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

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

Например: var а,р,n:integer;

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

К вещественному типу относится подмножество вещественных чисел, которые могут быть представлены в формате с плавающей запятой с фиксированным числом цифр. Запись значения в формате с плавающей запятой обычно включает три значения — m, b и e — таким образом, что m*b е , где b всегда равен 10, а m и e являются целочисленными значениями в диапазоне вещественного типа. Эти значения m и e далее определяют диапазон и точность вещественного типа.

Имеется пять видов вещественных типов: real, singlе, duble, exnende, comp. Вещественные типы различаются диапазоном и точностью связанных с ними значений

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

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

Горбачев Л.И. Основы программирования в среде Turbo Pascal.

Типы данных.

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

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

Например, значения переменной, равные 1 или 10 относятся к целочисленному типу, их можно складывать, умножать и выполнять другие арифметические операции. В языке Паскаль для описания типа в общем случае используется зарезервированное слово Type.

Формат: type имя_типа = значение_типа;

Все типы данных разделяются на две группы: скалярные (простые) и структурированные (составные). Скалярные типы в свою очередь подразделяются на стандартные и пользовательские. Стандартные типы данных предлагаются пользователям разработчиками системы Turbo Pascal.

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

Данные целочисленных типов могут быть представлены как в десятичной, так и в шестнадцатеричной системах. Если число представлено в шестнадцатеричной системе, перед ним без пробела записывается знак «$». Диапазон изменений шестнадцатеричных чисел от $0000 до $FFFF.

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

Например, $1F — шестнадцатеричное число; 25 — целое десятичное число; -1.9 — отрицательное вещественное число; 13.1 — вещественное число;

Вещественные десятичные числа в форме с плавающей точкой представлены в экспоненциальном виде: mE+p, где m — мантисса (целое или дробное число с десятичной точкой), «E» — означает «десять в степени», p — порядок (целое число).

Пример: 5.18E+02 — 5.18 * 10^2 = 518
10E-03 = 10 * 10^-3 = 0.01

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

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

Набор основных типов переменных Турбо-Паскаля можно представить в виде следующей схемы:

5.1. Скалярные типы данных.


5.1.1. Целочисленный тип.

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

5.1.2. Вещественный тип.

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

Эффективное использование типом single, double, extended, comp возможно только при наличии сопроцессора 8087 при включенной директиве компилятора <$N+>. По умолчанию она находится в выключенном состоянии — <$N->.
Пример: var Summa : single;
Root1, Root2 : double;

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

Символьный тип данных char обозначает множество символов кода ASCII (американский стандартный код для обмена информацией). Один символ требует для своего представления 8 бит = 1 байту. Символы пронумерованы от 0 до 127 в основной кодовой таблице и с 128 по 255 — в расширенной.

В программе значения переменных и констант типа char должны быть заключены в апострофы. Например, ‘A’ означает букву A, ‘ ‘ — пробел, ‘;’ — точку с запятой и т.д.

Для типа данных char существуют следующие стандартные функции:

5.1.4. Логический (булевский) тип.

Булевский тип представлен двумя значениями: True (истина) и False (ложь). Он широко применяется в логических выражениях и выражениях отношения.

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

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

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

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

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

Переменная типа «перечисление» задается перечислением значений, которые она может принимать. Описание этих переменных имеет вид:
1) type имя_типа = (список_значений);
var имя_переменной = имя_типа;
или
2) var имя_переменной: (список_значений);

Пример: type God = (Zima, Vesna, Leto, Osen); var A1, A2: God;
или
var A1, A2: (Zima, Vesna, Leto, Osen);

Здесь A1, A2 — переменные типа «перечисление», которые могут принимать любые из заданных значений. Описание типа перечисляемой переменной одновременно упорядочивает ее значения. Для данного примера Zima < Vesna < Leto < Osen (в операциях сравнения).
Пример: type Gaz = (C, O, N, F);
Metall = (Fe, Co, Na, Cu, Zn);
var G1, G2, G3 : Gaz;
Met1, Met2 : Metall;
Season : (Winter, Spring, Summer, Autumn);

В данном примере приведены два явно описанных типа данных пользователя — Gaz и Metall. Определены их значения — обозначения некоторых газов и металлов периодической таблицы Д.И.Менделеева. Переменные G1, G2, G3 и Met1, Met2 могут принимать только одно из перечисленных значений. Попытка присвоить им любое другое значение вызовет программное прерывание.

Третий тип перечисления анонимный ( не имеет имени) и задается перечислением значений в разделе Var. Season является переменной этого типа и может принимать значения Winter, Spring, Summer и Autumn. Таким образом может быть задан любой тип, но это не всегда приемлемо, так как первый способ более понятен и больше соответствует характеру языка Паскаль.
Пример: Для разработки программы управления уличным светофором можно использовать описание света, которое принимает три значения: красный, желтый и зеленый. Это можно описать так:
type Lights = (Red, Yellow, Green);
var Color: Lights;

Имена из списка перечисляемого типа (внутри круглых скобок) являются константами соответствующего типа перечисления и соответствуют обычным правилам для констант. Эти идентификаторы должны быть уникальны в пределах блока; недопустимы описания двух и более перечислимых типов с совпадающими константами. Например, описания вида:
type Color1 = (Red, Yellow, Blue);
Color2 = (Green, Blue, Gray);
являются некорректными из-за повторного использования идентификатора Blue.

Выражения и константы перечисляемого типа допустимы для использования в операторе CASE. Операция отношения и логические операции допустимы для значений перечисления одного и того же типа. Упорядочение осуществляется по номеру элемента в описании типа.

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

Для работы с данными перечисляемого типа в языке Паскаль предназначены стандартные функции Succ, Pred, Ord.

0 0 голоса
Рейтинг статьи
Читать еще:  Ошибка входа пользователя usr1cv8
Ссылка на основную публикацию
ВсеИнструменты
×
×