Стандартные данные. Стандартные типы данных. Операции и функции над данными разных типов. Составные типы данных

Наименование параметра Значение
Тема статьи: Стандартные типы данных
Рубрика (тематическая категория) Программирование

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

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

Тип Диапазон значений Требуемая память
Shortint -128 .. 127 1 байт
Integer -32768 .. 32767 2 байта
Longint -2147483648.. 2147483647 4 байта
Byte 0 .. 255 1 байт
Word 0 .. 65535 2 байта

Пример описания:

VAR n1, n2: Integer ; n3, n4: Word; n5, n5: Byte;

Над целыми операндами можно выполнять следующие операции:

сложение, вычитание, умножение, делœение, целочисленное делœение, получение остатка от делœения и др.
Размещено на реф.рф
Знаки этих операций:

+ – * / div mod

Результат данных операций над целыми операндами есть величина целого типа, кроме операции делœения /. Результат делœения всœегда имеет вещественный тип. Результат выполнения операции целочисленного делœения div целых величин есть целая часть частного. Результат выполнения операции получения остатка от делœения mod – остаток от делœения чисел. К примеру:

17 div 2 = 8, 3 div 5 = 0

17 mod 2 = 1, 3 mod 5 = 3 .

Операции сдвига влево shl и сдвига вправо shr:

I shl N; I shr N.

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

Операции отношения, примененные к целым операндам, дают результат логического типа TRUE или FALSE (истина или ложь).

В языке ПАСКАЛЬ имеются следующие операции отношения: равенство =, неравенство <>, больше или равно >=, меньше или равно <=, больше >, меньше < .

К аргументам целого типа применимы следующие стандартные (встроенные) функции, результат выполнения которых имеет целый тип:

Abs(X) – абсолютное значение, модуль Х;

Sqr(X) – Х в квадрате;

Succ(X) – следующее значение (X+1);

Pred(X) – Х–1.

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

Sin(X), Cos(X), ArcTan(X), Ln(X), Exp(X), Sqrt(X).

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

Результат выполнения функции проверки целой величины на нечетность Odd(X) имеет значение истина, в случае если аргумент нечетный, и значение ложь, в случае если аргумент четный:

X=5 Odd(X)=TRUE ; X=4 Odd(X)=FALSE.

Для быстрой работы с целыми числами определœены процедуры:

Dec(X,N) X:=X–N

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

Пример описания:

VAR n1, n2, n3, n4: Real;

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

сложение+ , вычитание , умножение * , делœение / .

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

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

К вещественным аргументам применимы функции, дающие вещественный результат:

Abs(X), Sqr(X), Sin(X), Cos(X), ArcTan(X), Ln(X),Exp(X), Sqrt(X), Frac(X), Int(X), Pi.

Функция Frac(X) возвращает дробную часть X, функция Int(X) – целую часть X.

Безаргументная функция Pi возвращает значение числа Пи = 3,1415926... вещественного типа.

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

Логический тип (Boolean) определяет те данные, которые могут принимать логические значения: False (ложь) или True (истина).

Примеры описания:

b1, b2, b3, b4: boolean;

Примеры присвоения значения:

b1:= True; b2:= False; b3:= not b1;

К булевским операндам применимы следующие логические операции:

Логический тип определœен таким образом, что FALSE < TRUE. Это позволяет применять к булевским операндам всœе операции отношения.

ТЕМА 5. Программирование линœейных алгоритмов

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

Стандартные типы данных - понятие и виды. Классификация и особенности категории "Стандартные типы данных" 2017, 2018.


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

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

Простые типы.
К простым типам относятся порядковые и вещественный типы.

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

Integer - целый тип, представляет собой подмножество множества целых чисел, определяемое конкретной реализацией. Во внутреннем представлении он занимает 2 байта, диапазон возможных значений - от -32768 до +32767, данные представляются точно.

Char - символьный тип, представляет собой набор символов, определяемый конкретной реализацией. Во внутреннем представлении он занимает 1 байт, множество значений этого типа фиксировано и упорядочено. Все символы считаются перенумерованными, начиная с нуля. Такой набор символов определен в каждой вычислительной сисеме. Он необходим, по крайней мере, для связи системы с внешним миром.
Константой символьного типа является один из допустимых символов, взятый в апострофы. Если апостроф сам является символом, то апостроф, являющийся значением константы, записывается дважды, например ‘7’ , ‘+’ , ‘F’ , ‘’’’ , ‘j’ , ‘?’ .

Boolean - логический тип, определяет диапазон логических значений, который содержит два элемента False (ложь) и True (истина). Во внутреннем представлении он занимает 1 байт.

Перечисляемый тип - задается перечислением тех значений, которые он может получать. Каждое значение именуется некоторым идентификатором и располагается в списке, обрамленном круглыми скобками, например:
Type colors = (red, white, blue, black);

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

Пример: Type month = 1 ..12;
lat = ’a’ .. ’z’;

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

Real - вещественный тип, представляет собой определяемое конкретной реализацией подмножество множества вещественных чисел. Во внутреннем представлении он занимает 6 байт, диапазон возможных значений - от 2.9Е-39 до 1.7Е+38, точность представления данных - 11...12 значащих цифр.

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

Целые числа

Операции.

В таблице приведены арифметические операции, которые определены для целого и вещественного типов:

В Паскале определены следующие логические операции:

Not - логическое НЕ;

And - логическое И;

Or - логическое ИЛИ;

Xor - исключительное ИЛИ.

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

P Q Not P P And Q P Or Q P Xor Q
True True False False True False True False False False True True True False False False True True True False False True True False

В Паскале используются следующие операции отношения: =, <>, >, <, <=, >=. Операции сравнения применимы к данным простых типов. Сравнивать можно между собой значения одного типа: целые, вещественные, символьные, логические, значения перечисляемого типа. Допустимо также сравнивать между собой целые и вещественные числа.
При вычислении выражений любого типа приоритет вычислений определяется расставленными скобками, а при их отсутствии по следующей таблице (в порядке убывания приоритета).

Данные -это объекты, которые обрабатываются в программе. В С есть 2

типа данных: константы и переменные. Константа - данное, которое не может меняться в процессе работы программы. Переменная – данное,

которое может меняться в процессе выполнения программы. Тип данных-целый, Модификатор - со знаком или без знака. Типы: char-символьный(

1 байт, символы из кодовой таблицы),

int-целый(размер=целому машинному слову, для 16-разрядных=2 байта)

Float-вещественный(переменные вещественного типа, 32 бита), double-вещественный(вещественная перемена двойной точности, 64 бита),

void-не имеющий значения.

Модификаторы типа: unsigned, signed, short, long.

Константы вещественного типа записываются в двух формах: в виде вещественных дробных чисел без десятичного порядка; в виде вещественных чисел с десятичным порядком.

Составные типы данных.

Данные регулярного типа(массивы). Массивом называется структура данных, позволяющая хранить под одним именем совокупность данных любого, но только одного какого-то типа. Имя массива -

общее имя переменных входящих в массив. Базовый тип массива -

тип переменных, входящих в массив. Элементы массива -переменные,

входящие в массив. Размерность массива -количество индексов,

которое необходимо для однозначной идентификации элемента массива. Размер массива -общее количество элементов в массиве.

int a10={1,2,3,4}; //и 6 нулей

Тип элемента -любой допустимый тип языка С. Тип индекса –

выражение значения целого типа:char, short, int, long.

Строки СИ- это последовательность байт, завершающихся знаком ‘’.

Длина строки ограничена лишь размером массива. Базовый тип данных-

char. Строки определяются либо с помощью массива символов (char a)

либо указателем на первый символ массива (char *b, который далее встречает оператор вида b=”IBM PC”)strcpy(s1, s2); //копировать строку

s2 в s1 strncpy(s1, s2,n);//копирует первые n символов из s2 в s1

strcpy(s1,&s2 *описатель. Спецификатор типа задает тип объекта и может быть любого основного типа, типа структуры, смеси. В качестве модификатора при объявлении указателя могут выступать ключевые слова const, near, far, huge.

Ключевое слово const указывает, что указатель не может быть изменен в программе. unsigned int * a;//переменная a-указатель на тип unsigned int

(целые числа без знака)

Для доступа к элементам массива существует 2 способа :1)использование обычных индексных выражений в : array=3. 2)использование адресных выражений и операции разадресации в форме *(array+16)

Указатели на многомерные массивы в языке С-это массивы массивов,

т е такие массивы, элементами которых являются сами массивы. Пр выполнении объявления двумерного массива int arr2 в памяти выделяется участок для хранения значения переменной типа arr, которая является указателем на массив из 4 указателей. Над указателями можно выполнять унарные операции : инкремент и декремент. При выполнении операций ++ и – значение указателя увел. или умен. на длину типа, на который ссылается используемый указатель.

В пособиях по языкам программирования переменную чаще всего определяют как пару «имя» - «значение». Имени соответствует адрес (ссылка) на участок памяти, выделенный переменной а значением является содержимое этого участка. Именем служит идентификатор, а значение соответствует типу переменной, определяющему множество допустимых значений и набор операций, для которых переменная может служить операндом. Множество допустимых значений переменной обычно совпадает со множеством допустимых констант того же типа. Таким образом, вводятся вещественные, целые и символьные переменные, причем символьные (char) иногда относят к целым. Целочисленные и вещественные считаются арифметическими типами. Арифметический (включая символьный) тип является частным случаем скалярных типов. К скалярным типам кроме арифметических относятся указатели, ссылки и перечисления. Переменные типизируются с помощью определений и описаний. В отличие от описания определение не только вводит объект (например, переменную), но и предполагает, что на основании этого определения компилятор выделит память для объекта (переменной).

ЦЕЛЫЕ ТИПЫ определяют константы, переменные и функции, значения которых реализуются множеством целых чисел, допустимых в данной ЭВМ.

Тип диапазон значений требуемая память Shortint -128 .. 127 1 байт Integer -32768 .. 32767 2 байта Longint -2147483648 ..2147483647 4 байта Byte 0 .. 255 1 байт Word 0 .. 65535 2 байта

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

+ - * div mod

Результат арифметической операции над целыми операндами есть величина целого типа. Результат выполнения операции деления целых величин есть целая часть частного. Результат выполнения операции получения остатка от деления - остаток от деления целых. Например:

17 div 2 = 8, 3 div 5 = 0 . 17 mod 2 = 1, 3 mod 5 = 3 .

Операции отношения, примененные к целым операндам, дают результат логического типа TRUE или FALSE (истина или ложь). В языке ПАСКАЛЬ имеются следующие операции отношения: равенство =, неравенство <>, больше или равно >=, меньше или равно <=,больше >, меньше < . К аргументам целого типа применимы следующие стандартные (встроенные) функции, результат выполнения которых имеет целый тип:

Abs(X), Sqr(X), Succ(X), Pred(X),

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

Sin(X), Cos(X), ArcTan(X), Ln(X), Exp(X), Sqrt(X).

Эти функции вычисляют синус, косинус и арктангенс угла, заданного в радианах, логарифм натуральный, экспоненту и корень квадратный соответственно. Результат выполнения функции проверки целой величины на нечетность Odd(X) имеет значение ИСТИНА, если аргумент нечетный, и значение ЛОЖЬ, если аргумент четный:

X=5 Odd(X)=TRUE , X=4 Odd(X)=FALSE.

Для быстрой работы с целыми числами определены процедуры:

ДЕЙСТВИТЕЛЬНЫЕ ТИПЫ определяет те данные, которые реализуются подмножеством действительных чисел, допустимых в данной ЭВМ.

Тип Диапазон значений Количество Требуемая цифр мантиссы память (байт) Real 2.9e-39 .. 1.7e+38 11 6 Single 1.5e-45 .. 3.4e+38 7 4 Double 5.0e-324 .. 1.7e+308 15 8 Extended 3.4e-4932 .. 1.1e+4932 19 10 Comp -9.2e+18 .. 9.2e+18 19 8

Тип Real определен в стандартном ПАСКАЛЕ и математическим сопроцессором не поддерживается. Остальные действительные типы определены стандартом IEEE 457 и реализованы на всех современных компьютерах. Для их использования при наличии сопроцессора или при работе на ЭВМ типа 80486 необходимо компилировать программу с ключом {$ N+} , а при отсутствии сопроцессора - с ключами {$N-,E+} . Тип Comp хотя и относится к действительным типам, хранит только длинные целые значения. Над действительными операндами можно выполнять следующие арифметические операции, дающие действительный результат:

сложение + , вычитание - ,умножение * ,деление /.

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

Abs(X), Sqr(X), Sin(X), Cos(X), ArcTan(X), Ln(X),Exp(X), Sqrt(X), Frac(X), Int(X), Pi.

Функция Frac(X) возвращает дробную часть X , функция Int(X) - целую часть X . Безаргументная функция Pi возвращает значение числа Пи действительного типа. К аргументам действительного типа применимы также функции

Trunc(X) и Round(X) ,

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

ЛОГИЧЕСКИЙ ТИП (Boolean) определяет те данные, которые могут принимать логические значения TRUE и FALSE. К булевским операндам применимы следующие логические операции:

not and or xor .

Логический тип определен таким образом, что FALSE < TRUE. Это позволяет применять к булевским операндам все операции отношения. В ТУРБО ПАСКАЛЬ введены еще разновидности логического типа: ByteBool, WordBool и LongBool, которые занимают в памяти ЭВМ один, два и четыре байта соответственно.

В данном примере объявлены переменные a , b и с . Они принадлежат к логическому типу.

Для сравнения логических данных предусмотрены следующие операции: Меньше (<); Меньше или равно (<=); Равно (=); Не равно (<>); Больше или равно (>=); Больше (>); Над логическими данными допускаются следующие операции: Логическое сложение (or); логическое умножение (and); Логическое отрицание (not); Таблица вычисления результата логического выражения:

A true true false false B true false true false not A (B) false (true) false (true) true (false) true (false) A or B true true true false A and B true false false false

СИМВОЛЬНЫЙ ТИП (Char) определяет упорядоченную совокупность символов, допустимых в данной ЭВМ. Значение символьной переменной или константы – это один символ из допустимого набора. Символьная константа может записываться в тексте программы тремя способами: как один символ, заключенный в апострофы, например:

"A" "a" "Ю" "ю" ;

С помощью конструкции вида #K , где K - код соответствующего символа, при этом значение K должно находиться в пределах 0..255; с помощью конструкции вида ^C , где C - код соответствующего управляющего символа, при этом значение C должно быть на 64 больше кода управляющего символа. К величинам символьного типа применимы все операции отношения. Для величин символьного типа определены две функции преобразования

Ord(C) Chr(K) .

Первая функция определяет порядковый номер символа С в наборе символов, вторая определяет по порядковому номеру К символ, стоящий на К-ом месте в наборе символов. Порядковый номер имеет целый тип. К аргументам символьного типа применяются функции, которые определяют предыдущий и последующий символы:

Pred(C) Succ(C). Pred("F") = "E" ; Succ("Y") = "Z" .

При отсутствии предыдущего или последующего символов значение соответствующих функций не определено. Для литер из интервала "a".."z" применима функция UpCase(C) , которая переводит эти литеры в верхний регистр "A".."Z" .

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

char (символьный); short (короткий целый); int (целый); long (длинный целый); float (вещественный); double (вещественный с удвоенной точностью); void (отсутствие значения).

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

Char newsimbol = ‘\n’ ; long filebegin = 0L; double pi = 3.1415926535897932385;

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

Long double zebra, stop;

вводит переменные с именами zebra и stop вещественного типа повышенной точности, но явно не присваивает этим переменным никаких значений. Употребляемые как отдельно, так и вместе с другими именами типов служебные слова unsigned (беззнаковый) и signed (знаковый) позволяют для арифметического или символьного типа выбирать способ учета знакового разряда:

Unsigned int i, j, k; // Значения от 0 до 65535 unsigned long L, M, N; // Значения от 0 до 4294967295 unsigned char c, s; // Значения от 0 до 255

При таком определении переменные i , j , k могут принимать только целые положительные значения в диапазоне от 0 до 65535 и т.д. Применение в определениях типов отдельных служебных слов int , char , short , long эквивалентно signed int , signed char , signed short , signed long . Именно поэтому служебное слово signed обычно опускается в определениях и описаниях. Использование при задании типа только одного unsigned эквивалентно unsigned int . При операциях с беззнаковыми (unsigned ) целыми не возникает переполнений, так как используется арифметика по модулю 2 в степени n , где n – количество битовых разрядов, выделяемых для представления соответствующих значений. Переменные одного типа занимают в памяти одно и тоже количество единиц (байтов), и это количество единиц может быть всегда вычислено с помощью операции sizeof .

Литература

  1. Немнюгин, С.А. TURBO PASCAL: Практикум.-Спб.: Питер, 2003.-256с.
  2. Подбельский, В.В. Язык СИ ++: Учеб. пособие.-5-е изд.-М.: Финансы и статистика,2003.-560с.
  • Сергей Савенков

    какой то “куцый” обзор… как будто спешили куда то