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

Материал из ПИЭ.Wiki

Перейти к: навигация, поиск

Типы данных

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

PASCAL

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

тип	   диапазон значений	      требуемая память
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.

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

   Inc(X)     X:=X+1 
   Inc(X,N)   X:=X+N 
   Dec(X)     X:=X-1 
   Dec(X,N)   X:=X-N 

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

Тип	  Диапазон значений	  Количество 	  Требуемая
                                цифр мантиссы   память (байт)
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с.
Просмотры
Инструменты

Besucherzahler russian mail order brides
счетчик посещений
Rambler's Top100
Лингафонные кабинеты  Интерактивные доски  Интерактивная приставка Mimio Teach