28443

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

Лекция

Информатика, кибернетика и программирование

константы переменные значения функций или выражения характеризуются своими типами. Порядковые типы К порядковым типам относятся целые логический символьный перечисляемый и тип диапазон. ORDX для логического типа даёт положительное целое число в диапазоне от 0 до 1. ORDX для символьного типа даёт целое число в диапазоне от 0 до 255 для перечисляемое типа ORDX даёт число в диапазоне от 0 до 65535.

Русский

2013-08-20

80.5 KB

10 чел.

Тема 3. Структура типов данных. Стандартные процедуры и функции, применимые к целым, вещественным числам. Логический, символьный, перечисляемый типы, тип-диапазон. Примеры.

Типы данных

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

Турбо Паскаль характеризуется разветвлённой структурой типов данных.

Простые типы

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

Порядковые типы

К порядковым типам относятся целые, логический, символьный, перечисляемый и тип – диапазон. Функция ORD(X) возвращает порядковый номер значения выражения X и применяется к любому порядковому типу. Для целых типов функция возвращает само значение X, т.е. ORD(X)=X для X, принадлежащего любому целому типу.

ORD(X) для логического типа даёт положительное целое число в диапазоне от 0 до 1.

ORD(X) для символьного типа даёт целое число в диапазоне от 0 до 255, для перечисляемое типа ORD(X) даёт число в диапазоне от 0 до 65535. Тип- диапазон сохраняет все свойства базового порядкового типа, поэтому результат применения к нему функции ORD(X) зависит от свойств этого типа. К порядковым типам можно также применять функции:

PRED (X)- возвращает предыдущее значение порядкового типа, т.е. ORD(PRED (X))= ORD(X)-1;

SUCC(X)- возвращает следующее значение порядкового типа, ( которое соответствует порядковому номеру ORD (X)+1), т.е.

                                                              ORD ( SUCC(x))= ORD(x)+1;

Пример:   X:=’М’ ;  PRED (x)=’L’; SUCC(x)=’N’;

Целые типы

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

Таблица 2

Целые типы

Название

Длина байт

Диапазон значений

Byte

ShortInt

Word

INTEGER

LongInt

1

1

2

2

4

0…255

-128…+127

0…65535

-32768…+32767

-2147483648…+2147483647

А) При использовании процедур и функций с целочисленными параметрами следует руководствоваться « вложенностью» типов, т.е. везде, где может использоваться WORD, допускается использование BYTE ( но не наоборот), в LONGINT « входит» INTEGER , который в свою очередь включает в себя SHORTINT.

Перечень процедур и функций, применимых к целочисленным типам, приведём в таблице 2, буквами b, s, w, i, l, обозначены выражения соответственно типа byte, shortint, word, integer, u lougint, X- выражение любого из этих типов; буквы vb, vs, vw, vi, v,l vx, обозначает переменные соответствующих типов. В квадратных скобках указывается необязательный параметр.

Таблица 3 - Стандартные процедуры и функции, применимые к целым типам                                                                                        

Обращение

Тип результата

Действие

abs(x)

х

Возвращает модуль х

chr ( b)

Char

Возвращает символ по его коду

dec ( vx[,i])

--

Уменьшает значение vx на i, а при отсутствии i–на 1

inc ( vx[,i])

--

Увеличивает значение vx на i, а при отсутствии i-на 1

Hi ( i)

Byte

Возвращает старший байт аргумента

Hi ( w)

Byte

Возвращает старший байт аргумента

Lo(i)

--

Возвращает младший байт аргумента

Lo(w)

--

Возвращает младший байт аргумента

odd (l)

Boolean

Возвращает TRUE, если аргумент – нечетное число

Random (w)

Как у параметра

Возвращает псевдослучайное число,  равномерно распределенное в диапазоне 0..(w-1)

sqr (x)

х

Возвращает квадрат аргумента

swap(i)

INTEGER

Меняет местами байты в слове

swap (w)

Word

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

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

Значениями логического типа может быть одна из предварительно объявленных констант FALSE ( ложь) или TRUE ( истина) . Для них справедливы правила: ord ( false)=0; ord ( true)=1; false<true; succ(false)=true; pred (true)= false

Логические операции применимы к операндам целого и логического типов. Если операнды- целые числа, то результат логической операции есть тоже целое число, биты которого ( двоичные разряды) формируются из битов операндов по правилам, приведённым ниже.

Таблица 4

Логические операции над данными типа INTEGER

Операнд 1

Операнд 2

not

and

or

xor

1

0

0

0

1

1

-

-

0

1

0

1

0

1

-

-

-

-

-

-

0

0

0

1

-

-

0

1

1

1

-

-

0

1

1

0

Логические операции над логическими данными дают результат логического типа по правилам, указанным в таблице:

Таблица 5 - Логические операции над данными типа Boolean

Операнд 1

Операнд 2

not

and

or

xor

TRUE

FALSE

FALSE

FALSE

TRUE

TRUE

-

-

FALSE

TRUE

FALSE

TRUE

FALSE

TRUE

-

-

-

-

-

-

FALSE

FALSE

FALSE

TRUE

-

-

FALSE

TRUE

TRUE

TRUE

-

-

FALSE

TRUE

TRUE

FALSE

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

Значениями символьного типа является множество всех символов ПК. Каждому символу приписывается целое число в диапазоне 0… 255, которое служит кодом внутреннего представления символа (его возвращает функция ORD).

  Для кодировки используется код ASCII (Американский стандартный код для обмена информацией). Это 7-битный код т.е. с его помощью можно закодировать лишь 128 символов в диапазоне от 0 до 127. В 8-битном байте, отведенном для хранения символа в Турбо Паскале, можно закодировать символы в диапазоне от 0 до 255.

  Первая половина символов ПК с кодами 0..127 соответствует стандарту ASCII. Вторая половина символов с кодами 128…255 не ограничена жесткими рамками стандарта и может меняться на ПК разных типов.

  К типу CHAR применяются операции отношения, а также встроенные функции: CHR (B) –функция типа CHAR; преобразует выражение. B типа BYTE в символ и возвращает его своим значениям.

UPCASE (CH) –функция типа CHAR; возвращает прописную букву, если CH  -строчная латинская буква, в противном случае возвращает сам символ CH.

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

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

                         type      неделя=(пн., вт., ср., чтв., птн., сбб., вс.);

  VAR  D:  неделя;

Соответствие между значениями перечисляемого типа и порядковыми номерами этих значений устанавливается порядком перечисления: первое значение в списке получает порядковый номер 0, второе-1 и т. д.

           ord (пн.)=0;       ord(вт.)=1;          …             ord(вс.)=6;

 Допустим оператор:

           D:=ср.;

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

                                         D:=неделя(0);

  Переменные любого перечисляемого типа можно объявлять без предварительного описания этого типа, например:

    VAR      D:(пн., вт., ср., чтв., птн., сб., вс.);

Тип – диапазон

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

  Тип – диапазон задается границами своих значений внутри базового типа:

         <мин. знач.>..<макс. знач.>

Здесь <мин. знач.> - минимальное значение типа –диапазон, <макс. знач.> -максимальное его значение.

Например:

   type

         cel=’0’..’9’;

Тип – диапазон можно указывать непосредственно при объявлении переменной, например:

     VAR      DEN: 1..31;

                   MEC: 1..12;

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

HIGH (x) – возвращает максимальное значение типа – диапазон, которому принадлежит x

LOW (x) – возвращает минимальное значение типа – диапазон.

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

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

Таблица 6

Длина

байт

Название

Количество значащих цифр

Диапазон десятичного порядка

6

8

10

8

real

extended

comp

11…12

15…16

19...20

19...20

-39…+38

-324…+308

-4951…+4932

-2*1063+1…+2*1063-1

Вещественное число в Турбо Паскале занимает от 4 до 10 смежных байт и имеет следующую структуру в памяти ПК:

s

l

m

Здесь s – знаковый разряд числа; l – экспоненциальная часть, содержит двоичный порядок; m – мантисса числа. Мантисса m имеет длину от 23 (для SINGLE) до 63 (для EXTENDED) двоичных разрядов, что и обеспечивает точность 7..8 для EXTENDED десятичных цифр. Десятичная точка (запятая) подразумевается перед левым (старшим) разрядом мантиссы, но при действиях с числом ее положение сдвигается влево или вправо в соответствии с двоичным порядком.

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

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

Таблица 7

Обращение

Тип параметра

Тип результата

Примечание

Abs

arctan (x)

cos(x)

exp(x)

frac(x)

int(x)

ln(x)

pi

Random

Random(x)   

Randomize

sin(x)

sqr(x)

sqrt(x)

       

real, integer

real

--

--

--

--

--

--

--

integer

--

real

--

--

Тип аргумента

real

--

--

--

--

--

--

--

integer

--

real

--

--

Модуль аргумента

Арктангенс (знач. в рац.)

Косинус, угол в радианах

Экспонента

Дробная часть числа

Целая часть числа

Логарифм натуральный

π=3.141592653

Псевдослучайное число, равномерно распределенное в диапазоне

Псевдослучайное целое число, равномерно распределенное в диапазоне 0…(x-1)

Инициация генератора псевдослучайных чисел

Синус, угол в радианах

Квадрат аргумента

Корень квадратный

1осн [90-118]

12доп. [30-42]

Контрольные вопросы

  1.  Какие типы данных относятся порядковым типам?
  2.  Какие функции можно применять к порядковым типам?
  3.  Какие две функции поддерживают работу с типами-диапазонами?
  4.  Как задается перечисляемый тип?
  5.  Какие типы относятся к  структурированным?
  6.  Что представляют собой пользовательские типы?
  7.  Что представляют собой типизированные константы?
  8.  Какие особенности использования переменных перечисляемых типов?
  9.  Что представляет собой типизированная константа процедурного типа?


 

А также другие работы, которые могут Вас заинтересовать

57759. Фізика і хімія - науки, що визначають сучасний науково – технічний прогрес 50.5 KB
  Мета уроку: розкрити величезне визначальне значення наук фізики та хімії в розв’язанні глобальних проблем сучасності: енергетичної, продовольчої, технічної, проблеми збереження миру в усьому світі...
57760. Робота з рухомою картою зоряного неба 149.5 KB
  Рухома карта складається з двох частин: рухомого диска (зоряної карти), який може обертатись навколо вісі, що проходить через його центр, і нерухомо розташованого над ним накладного круга.
57761. Изучение звёздного неба 95 KB
  Цели урока: Создать условия для: изучения созвездий наблюдения интересных объектов в этих созвездиях отработки навыков уверенного нахождения созвездий и самых ярких звёзд северного неба...
57762. Розв’язування нерівностей з однією змінною 114.5 KB
  Мета: відтворити знання про лінійні нерівності з однією змінною; удосконалювати вміння учнів розвязувати нерівності з однією змінною формувати навички самостійної роботи...
57763. Решение иррациональных неравенств 1.41 MB
  Формировать умения и навыки решения иррациональных неравенств различными способами. Формировать социальную компетентность: предоставлять учащимся возможность проявлять инициативу.
57764. Der Gemüsegarten 38.5 KB
  Практична: ввести лексичні одиниці за темою уроку та тренувати їх вживання в усному та писемному мовленні, закріпити вживання сильних дієслів у теперішньому часі на прикладі дієслова essen.
57765. Текст-переклад. Бінарний урок з інформатики та англійської мови 143.5 KB
  А зараз давайте пригадаємо пристрій, який допоможе нам друкувати текст. Називається він?(клавіатура). На клавіатурі знаходиться багато клавіш. Це алфавітно-цифрове поле (демонструється малюнок клавіатури).
57766. Перерізи многогранників. Метод слідів 712 KB
  Многогранники Опуклі многогранники Правильний многогранник Куб Паралелепіпед Піраміда Призма а у другій нові переріз діагональний переріз січна площина.
57767. Перська держава 73.5 KB
  Мета: ознайомити учнів з особливостями зародження і функціонування держави Персії охарактеризувати діяльність найвідоміших правителів Персії: Кіра ІІ Дарія І розкрити завойовницький характер їх зовнішньої політики...