Программирование для гуманитариев

Типы данных

Показывать лекцию целиком

"Программа = Алгоритм + Структура данных"

Цель лекции:

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

    Следует отметить, что концепция типов данных не реализована в таких языках, как Perl, Visual Basic Script (VBScript), не полностью реализована в Quick Basic, Visual Basic и т.п. Именно поэтому не рекомендуется использовать эти языки для начинающих изучать программирование.

    Типы данных в таких языках, как C, C++, Java можно принудительно приводить к определенному типу. В этих языках автор советует так и поступать - если потребуется, применять принудительное приведение типов, а не ограничиваться приведением по-умолчанию. В противном случае могут возникнуть ошибки, например: "Не могу привести тип 'unsigned char *' в 'const char *'".

    5.1. Примитивные (машинные) типы данных

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

    Как известно из школьных учебников по информатике [36, 54, 53, 35], любое число, любые символы, любые объекты в памяти ЭВМ представляются в виде последовательности нулей и единиц - битов. Бит (от английского Binary digIT) является единицей информации, принимающей одно из двух значений: "0" и "1". Поскольку бит - очень малая величина, информацию обычно выражают в байтах или кратных ему числе битов. Один байт соответствует восьми битам. Иначе говоря, в одном байте можно закодировать 256 (2^8) символов, представить целые числа без знака от 0 до 255, или представить целые числа со знаком от -128 до +127. Заметим, что все символы в компьютере представлены в виде целых чисел без знака.

    Отступление. В середине 70-х годов XX века ученые подсчитали, что человеческий мозг вмещает в себя ~10^18 бит информации. Это число соответствовало в то время всей информации, содержащейся в библиотеке им. В.И. Ленина. В переводе на современный компьютерный язык это соответствует приблизительно одному экзабайту - миллиону гигабайт информации, что приближенно равно объему одной крупной распределенной базы данных бронирования авиабилетов и авиаперевозок (по оценкам автора). Почему же возможности мозга человека превышают возможности "компьютерного" интеллекта? Дело в том, что человеческий мозг может удерживать в своей памяти, по аналогии с кошельком, как "медные монеты" - необработанные записи, последовательности букв и цифр, так и "золотые монеты" - сложные, обработанные данные, в виде готовых концепций, теорем и т.д. Это делает мозг более "гибкой" системой, чем компьютер (позволяя, путем "сжатия с потерями" уменьшать объем информации в 100 и более раз).

    Итак, все данные в ЭВМ представляются в виде одного или нескольких битов. Тогда напрашивается вопрос: "А откуда в языках программирования такое большое число машинных типов данных, если все кодируется битами?" Автор отвечает: количество машинных типов данных определяется количеством регистров и их типом в центральном процессоре ЭВМ. Регистр можно представить как "сверхоперативную", быструю, встроенную в центральный процессор память. Эти регистры имеют длину 1 байт, 2 байта ("полуслово", "слово"), 4 байта ("слово", "двойное слово") и 8 байт ("двойное слово"). Изредка используются и более длинные регистры (например, для хранения [чисел с плавающей точкой] повышенной разрядности).

    Помимо своего размера (так называемой разрядности) регистров различают также назначение регистра и формат хранимых в нем данных. Подробнее о машинных типах данных смотри этот раздел ниже.

    5.2. Целые числа и целочисленная арифметика

    5.2.1. Целый тип

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

    Тип данных "целые без знака" представляют собой натуральный ряд чисел, которые начинаются с "0" (а не с "1", как в математике!) и продолжаются вплоть до исчерпания разрядности регистра.

    Тип данных "целые со знаком" содержат в старшем бите (по-другому - в самом "левом", первом по порядку бите) признак знака. Если этот бит имеет значение: "0", то число считается положительным, если "1" - отрицательным числом.

    Примечание: отрицательные числа представляют в ЭВМ в виде дополнительного кода. Подробнее о дополнительном коде смотри, например, [62], а также школьные учебники по информатике [35, 36, 53, 54].
    Минимальные и максимальные значения чисел в целочисленных регистрах
    Тип регистра min max
    целые без знака
    1 байт 0 255
    2 байта 0 65 535
    4 байта 0 4 294 967 295
    8 байт 0 18 446 744 073 709 600 000
    целые со знаком
    1 байт -128 127
    2 байта -32 768 32 767
    4 байта -2 147 483 648 2 147 483 647
    8 байт -9 223 372 036 854 780 000 9 223 372 036 854 780 000

    В таблице 5.1 представлены максимальное (max) и минимальное (min) значения, применяемые числами в целочисленных регистрах различной разрядности для типов "целые со знаком" и "целые без знака". Между этими максимальными и минимальными значениями могут принимать целочисленные значения константы и переменные указанных типов.

    Соответствие между разрядами целочисленных регистров и связанных с ними типов данных
    Разрядность регистров Обозначение Примечание Префикс
    Quick Basic
    4 байта <идентификатор>% Существует только один целый тип
    Java
    1 байт byte со знаком b
    2 байта short со знаком n
    4 байта int со знаком i
    8 байт long со знаком l
    C/C++
    1 байт char со знаком c
    unsigned char без знака uc
    2 байта short со знаком n
    unsigned short без знака un
    4 байта long со знаком l
    unsigned long без знака ul
    2 или 4 байта int со знаком i, n
    unsigned без знака u
    C/C++

    Windows

    API
    2 или 4 байта BOOL int fb
    1 байт BYTE unsigned char b
    2 байт WORD unsigned short w
    4 байта DWORD unsigned long dw
    2 или 4 байта UINT unsigned int u
    Указатели:
    2 байта PSTR char near * npsz
    2 байта NPSTR char near * npsz
    4 байта LPSTR char far * lpch
    4 байта LPCSTR const char far * lpsz
    2 байта PBYTE BYTE near * npb
    4 байта LPBYTE BYTE far * lpb
    2 байта PINT int near *
    4 байта LPINT int far *
    2 байта PWORD WORD near * npw
    4 байта LPWORD WORD far * lpw
    2 байта PLONG long near *
    4 байта LPLONG long far *
    2 байта PDWORD DWORD near * npdw
    4 байта LPDWORD DWORD far * lpdw
    4 байта LPVOID void far * - дальний указатель на пустой тип lpv

    В таблице 5.2 дается соответствие между разрядностями целочисленных регистров и связанными с ними обозначениями типов на языках Quick Basic, C/C++, Java. В этой же таблице приведены "псевдонимы" "машинных" типов данных, применяемых в библиотеке Windows API. Подробнее о Windows API смотри в книгах [86-91].

    5.2.2. Целочисленная арифметика

    С целочисленными типами данных возможны следующие операции:

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

    Арифметические операции
    Название операции Обозначение Приоритет Кол-во операндов Примечание
    Целочисленная арифметика
    Сложение + 8 2
    Вычитание - 8 2
    Умножение * 7 2
    Целочисленное деление / 7 2
    Остаток от деления % 7 2
    Смена знака числ - 5 1
    Инкремент числа ++ 3 1
    Декремент числа -- 3 1
    Отношение "Больше" > 11 2
    Отношение "Больше или равно" >= 11 2
    Отношение "Меньше" < 11 2
    Отношение "Меньше или равно" <= 11 2
    Отношение "Равно" (Си под.) == 12 2
    Отношение "Равно" (Basic) = 12 2
    Отношение "Не равно (Си под.) != 12 2
    Отношение "Не равно (Basic) <> 12 2
    Арифметика плавающей точки
    Сложение + 8 2
    Вычитание - 8 2
    Умножение * 7 2
    Целочисленное деление / 7 2
    Остаток от деления % 7 2
    Смена знака числа - 5 1
    Инкремент числа ++ 3 1
    Декремент числа -- 3 1
    Отношение "Больше" > 11 2
    Отношение "Больше или равно" >= 11 2
    Отношение "Меньше" < 11 2
    Отношение "Меньше или равно" <= 11 2

    5.2.3. Особые ситуации при работе с целыми числами

    Целочисленная арифметика генерирует следующие ошибки [39,40], вызывает так называемые программные прерывания:

  • деление на ноль (divide by zero);
  • переполнение (overflow) - попытка записать в регистр целое число с разрядностью, превышающей разрядность регистра, например: short i = 2000000 или unsigned short u=-1;
  • исчезновение знака - прерывание, указывающее, что в старший бит регистра (то есть в признак знака) был перенос единицы из следующего за ним разряда (бита). Соответствует прерыванию "переполнение", но для целых чисел со знаком.
  • 5.2.4. Замечания о целочисленном делении

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

  • 2/3 = 0;
  • 3/3 = 1;
  • 4/3 = 1;
  • 5/3 = 1;
  • 6/3 = 2;
  • и т.д.
  • На практике это приводит к большим ошибкам округления при расчетах. Но иногда следует использовать только целочисленную арифметику. Например, при выдаче информации на экран дисплея в "графическом" виде по-умолчанию используется (во всяком случае, в библиотеке Windows API) только целочисленные значения. Для этих целей использование целочисленной арифметики - "естественно".

    Примечание: В интерпретируемом языке Perl есть возможность "включения/выключения" целочисленной арифметики. Это делается при помощи директив:
  • use integer - для включения целочисленной арифметики;
  • no integer - для выключения целочисленной арифметики.
  • Подробнее смотри [59].

    5.3. Булевы типы. Булева алгебра

    5.3.1. Булева алгебра: введение

    Булева алгебра - это раздел математики, изучающий операции с логическими данными, то есть данными, принимающие значения: "Истина" и "Ложь" (по-английски: "true" и "false"). Эта дисциплина была разработана английским математиком XIX века Джорджем Булем, имя которого она носит.

    К булевым операциям (которые в русскоязычной литературе чаще называют логическими операциями) относятся:

  • конъюнкция (логическое "И");
  • дизъюнкция (логическое "ИЛИ");
  • отрицание (логическое "НЕ");
  • логическое "исключающее ИЛИ";
  • логическая "эквивалентность";
  • логическое "следствие".
  • Из этих логических операций первые три операции присутствуют практически во всех языках программирования, а последние две - только в языках логического программирования (и то не во всех). При этом операция логического "НЕ" - унарная операция, применимая к следующей за ней переменной, а остальные операции - бинарные (применимые к паре значений: предыдущему и последующему). Результаты логических операций представлены [в таблице 5.4]. В ней же представлены обозначения этих операций в математике, языках Quick Basic, C/C++, Java.

    Операции Булевой алгебры
    Название операции Обозначение Приоритет Кол-во операндов Примечание
    Логическое "И" (Си) 15 2
    Логическое "И" (Basic) AND 15 2
    Логическое "ИЛИ" (Си) || 16 2
    Логическое "ИЛИ" (Basic) OR 16 2
    Логическое "НЕ" (Си) ! 12 1
    Логическое "Не" (Basic) NOT 12 1
    Битовое "И" 13 2
    Битовое "ИЛИ" | 14 2
    Битовое "Исключающее ИЛИ" (XOR) ^ 14 2
    Примечание: битовые операции реализуют операции побитно, например 2 1 выдаст 0 (10 01 = 00)

    Результаты логических операций:
    Конъюнкция A B A = TRUE A = FALSE
    B = TRUE TRUE FALSE
    B = FALSE FALSE FALSE
    Дизъюнкция A || B A = TRUE A = FALSE
    B = TRUE TRUE TRUE
    B = FALSE TRUE FALSE
    Исключающее ИЛИ А ^ B A = TRUE A = FALSE
    B = TRUE FALSE TRUE
    B = FALSE TRUE FALSE
    Эквивалентность А <=> B A = TRUE A = FALSE
    B = TRUE TRUE FALSE
    B = FALSE FALSE TRUE

    5.3.2. Булевы типы

    Как уже сказано выше, логические выражения могут принимать только два значения: "false" (ложь) и "true" (истина). Эти значения-константы определены следующим образом:

  • false = 0;
  • true = 1, или true != 0.
  • Логично использовать для этих констант целое число разрядностью 1 бит, но... Поскольку минимальным размером регистра, отводимого под целое число, является 1 байт, то именно ячейка памяти этого размера служит для хранения числа с типом данных: "Boolean". На самом деле размер этого типа данных может составлять 2 или даже 4 байта. Это связано со следующими обстоятельствами.

    В основном стандарте для языка Си: ANSI C, - отсутствует булевский тип данных. Вместо него используется целый тип данных: integer (int). Этот тип данных реализован в различных компиляторах по-разному, и занимает от 2-х до 4-х байтов. Константе "ложь" ("FALSE") соответствует значение; "0", а любое ненулевое значение воспринимается как "истина". Это позволяет написать на языке Си компактный код, например:

    while( !eof( stream ) )

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

    Не смотря на несоответствие стандарту ANSI C, в стандартной библиотеке Windows API для языков Си/Си плюс-плюс введен тип BOOL, являющегося реализацией булевского типа данных. Тип данных: "Boolean" также введен в стандартах на C++ и Java.

    Булевский тип данных отсутствует в Quick Basic и более старых реализациях языка Basic, но присутствует в языке Visual Basic и его "клонах".

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

    5.4. Арифметика плавающей точки

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

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

    5.4.1. Представление чисел с плавающей точкой

    Число с плавающей точкой представляет собой вещественное число, имеющее целую часть и дробную часть, представляющую последовательность нулей и единиц (то есть обычные числа, получающиеся в результате измерения). В компьютере они представляются в виде мантиссы и порядка. Понятие мантиссы и порядка дается в шестом классе курса алгебры средней школы. Напомним его:

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

    0.<мантисса>·10<порядок>

    например:

    0.123·103
    0.25·1010

    В первом примере мантисса равна 0,123, а порядок соответствует числу 3. Итого получили число 123. Во втором примере мантисса равна 0.25, а порядок - 10 (получилось число 2 миллиарда 500 миллионов). Мантисса всегда задает точность, с которой представлены вещественные числа. Чем количество разрядов в мантиссе больше, тем выше точность расчета. В приведенном примере мантисса первого числа больше мантиссы второго числа, хотя второе число много больше первого. Порядок определяет "разряд", с которого начинается "отсчет" начала значения мантиссы.

    Представление чисел с плавающей точкой в ЭВМ также происходит с помощью нулей и единиц, однако их формат отличается от формата целых чисел (см. [40]). Схематично его можно представить следующим образом:

    <знак><мантисса><знак порядка><порядок>

    Длина же машинного представления чисел с плавающей точкой равна 4, 8 и 10 байт. При этом число в регистре длиной 4 байта имеет тип float (или real), в регистре длиной 8 байт - double, в регистре длиной 10 байт - long double.

    В таблице 5.5 представлены максимальные и минимальные значения, принимаемые числами с плавающей точкой в регистрах с различной разрядностью. В таблице 5.6 дается соответствие между разрядностью регистров чисел с плавающей точкой и их обозначениях в языках Quick Basic, Си, C++ и Java.

    Минимальные и максимальные значения чисел в регистрах с плавающей точкой
    Тип регистра Мантисса Порядок
    min max min max
    4 байта 1,18 3,40 -38 38
    8 байт 2,23 1,79 -308 308
    10 байт 3,37 1,18 -4 932 4 932
    Соответствие между разрядами регистров с плавающей точкой и связанных с ними типов данных
    Разрядность регистров Обозначение Примечание Префикс
    Quick Basic
    8 байт <идентификатор> Тип по-умолчанию
    Java
    4 байта float Не реализован в J# f
    8 байт double d
    C/C++
    4 байт float f
    8 байт double d
    10 байт long double ld

    5.4.2 Арифметика чисел с плавающей точкой

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

  • сложение;
  • вычитание;
  • умножение;
  • деление;
  • возведение в степень;
  • нахождение остатка от деления (не во всех языках);
  • смена знака числа;
  • инкремент числа;
  • декремент числа;
  • отношение "больше" и "меньше";
  • а также доступны другие алгебраические функции.
  • Все эти операции, их обозначения, действия, а также приоритет операций и комментарии к ним представлены в таблице 5.3.

    5.4.3. Особые ситуации при работе с числами с плавающей точкой

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

  • деление на ноль (divide by zero) - попытка деления на ноль;
  • переполнение мантиссы (overflow) - положительное или отрицательное число в регистре выходит за свои максимальные значения;
  • переполнение порядка - в результате умножения порядок превысил свое максимальное либо минимальное значение;
  • исчезновение порядка - обнуление мантиссы при минимальном значении порядка.
  • Возможны и другие прерывания.

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

    5.5. Резюме

    Итак, после прослушивания данной лекции Вы узнали:

  • Существует два типа данных: "машинные" (которые определяются архитектурой вычислительных машин) и "пользовательские" (определенные системными и прикладными программистами). Первый тип данных представлен в лекциях 5 и 6], второй - в лекции 7 и лекции 8. В данном описании не рассматриваются классы - это прерогатива отдельной темы.
  • Концепция "типов данных" реализована в большинстве "настоящих" языков программирования, но отсутствует в "скриптовых" языках (языках написания макросов).
  • В следующей лекции Вы познакомитесь с "примитивными символьными" данными.

    5.6. Глоссарий

    Термин Английский термин Разъяснение
    тип данных data type Термин, определяющий отнесение ячеек памяти по их содержимому, формату и назначению к определенным группам в ЭВМ и языках программирования Типы данных определяют допустимые для них процедуры, функции и операции.
    программирование 1. programming 1. Процесс написания программ на языках программирования.
    программа program Реализация алгоритма на языке программирования для его обработки на ЭВМ. Эта реализация подразумевает использование определенных типов данных.
    язык программирования 1. programming language 1. Программный комплекс, позволяющий подготовить и реализовать некоторый алгоритм для выполнения на ЭВМ.
    язык программирования 2. programming language 2. Некоторые правила, с помощью которых алгоритм преобразуется в программу для ЭВМ. Эти правила накладывают ограничения на синтаксис, типы данных, языковые конструкции, процедуры и функции. Эти ограничения могут иметь принципиальное значение на реализацию алгоритма, поэтому выбор языка определяется на ранних этапах разработки проекта.
    процедура procedure Основная единица процедурного программирования. Процедура - это обособленная часть общего алгоритма, имеющая самостоятельное значение и разбивающая общую программу на части, простые в описании, а значит - легкие в реализации. В более узком смысле процедура - это подпрограмма (subroutine), не возвращающая значения, кроме параметров, передаваемых по ссылке.
    функция 1. function 1. В узком смысле - подпрограмма, возвращающая единственное значение - значение функции.
    алгоритм algorithm Последовательность действий, приводящая к определенному однозначному результату.
    машинные типы данных computer data types Типы данных, поддерживаемые архитектурой вычислительных машин (прежде всего - микропроцессором) и "зашитые" в реализацию языков программирования 1.
    пользовательские типы данных user data types Типы данных, созданные пользователем ЭВМ или системным программистом на основе машинных типов данных.
    класс class Пользовательский тип данных, описанный в терминах объектно-ориентированного программирования (ООП). Включает в себя как данные, так и методы (разновидность процедур и функций).
    приведение типов reduction of the types В языках программирования - изменение типа данных при реализации алгоритмов. С помощью приведения типов можно, например, результат целочисленной арифметики присвоить переменной плавающей точки. Операция приведения типов может не работать в контекстно-зависимых языках, таких как Perl.
    принудительное приведение типов forced reduction of the types Явное, не зависящее от реализации языка программирования (1) изменение типов данных для выражений и функций этого языка. Принудительным приведением типов нужно пользоваться с осторожностью, поскольку эти операции не генерируют ошибок (переполнения, исчезновения значащих разрядов, например). Но часто это единственный способ заставить работать функцию.
    приведение типов по-умолчанию default reduction of the types Встроенный в язык высокого уровня алгоритм приведения типов данных. Приведение типов на языке Си происходит по следующей схеме: char -> unsigned char -> short -> unsigned short -> long -> unsigned long -> float -> double -> long double. Только при такой схеме приведения типов значение переменных не теряется. Принудительное приведение типов в обратном порядке чревато потерей информации (в результате отбрасывания старших разрядов числа).
    бит 1. bit 1. Единица информации в информатике, которая может принимать одно из двух значений: "0" или "1".
    бит 2. bit 2. Минимальная ячейка памяти, предназначенная для хранения двоичного разряда.
    байт 1. byte 1. Единица информации, состоящая из 8 битов. С помощью одного байта можно представить до 256 символов, что достаточно для представления алфавитов европейских языков (см. кодировки).
    байт 2. byte 2. Кратная байту (1) ячейка памяти в ЭВМ. Байт - минимальная единица информации, воспринимаемая ЭВМ. Все ячейки в ЭВМ выровнены по границам байта.
    ячейка памяти memory cell Устройство в ЭВМ (регистр, конденсаторная ячейка и т.п.), способное записывать, хранить в себе и выдавать по запросу двоичные числа. Представляет собой последовательность битов и байтов.
    сжатие с потерями lossy compression Алгоритм "упаковки", "уплотнения" информации с "отбрасыванием" не воспринимаемых человеком данных. Сжатие с потерями используется в алгоритмах "сжатия" музыки и видео - MPEG, "реалистичных" изображений JPEG и других.
    полуслово semiword Ячейка памяти размером в два байта. Термин используется в "многоразрядных" ЭВМ.
    слово word Ячейка памяти размером в два байта (для процессоров семейства x86) или четыре байта (для "многоразрядных" процессоров).
    двойное слово double word Ячейка памяти размером от 4 байтов (для процессоров семейства x86) и от 8 байтов (для "многоразрядных" процессоров).
    назначение регистра function of a register Выполняемая функция регистров в микропроцессорах. В современных процессорах существуют регистры общего назначения, сегментные регистры и регистры флагов.
    РОН general-purpose register См. регистр общего назначения
    регистр общего назначения general-purpose register Регистр в микропроцессоре, хранящий в себе промежуточные числовые данные в расчетах, и иногда - адреса памяти.
    сегментный регистр segment register Регистр в микропроцессоре семейства x86, хранящий в себе "старшую" часть адреса оперативной памяти (в микропроцессоре 80386 - селектор таблицы памяти). Сегментные регистры участвуют только в адресации памяти и пересылки данных.
    регистр флагов flags register Регистр в микропроцессоре, содержащий признаки результатов выполнения операций с данными в этом микропроцессоре.
    признак результатов sign of results Некоторое событие, условие, возникающее в результате выполнения операций с данными. Например, признаком может быть равенство нулю результата операции, смена знака результата, переполнение и т.п. Признаки результата используются операторами условия.
    размер регистра dimension of a register Количество битов (разрядность) регистров в микропроцессоре.
    разрядность регистра width (capacity) of the register См. размер регистров. Разрядность регистров обычно кратно байту (8 бит).
    старший бит (числа) old bit (of a number) Самый "левый", расположенный в начале ячейки памяти бит.
    целые числа integer Целые числа в "математическом" смысле, представленные в ЭВМ в двоичном виде, в виде последовательности нулей и единиц. Различают типы целые со знаком и целые без знака. Целые числа имеют длину от одного байта до одного двойного слова.
    натуральный ряд чисел natural number sequence Обычные числа, используемые при счете людьми (например, "на пальцах"). Натуральный ряд начинается с единицы и продолжается сколь угодно больше (до "бесконечности").
    целые без знака unsigned integer Представляют практически "натуральный ряд" чисел (в математическом понимании), записанный в двоичном формате и начинающийся не с "1", а с нуля. Старший бит этого типа является двоичным разрядом.
    целые со знаком signed integer Представляет собой тип "целых чисел", представленных в двоичной форме. Старший бит этого типа - знак числа ("1"), а сами отрицательные числа представлены в "дополнительном коде".
    признак знака sign attribute Самый старший (левый) бит в регистре или ячейке памяти. Если он установлен (его значение - "1"), то число в регистре - отрицательное. Если же он сброшен (его значение - "0"), то число в регистре положительное.
    старшинство бит precedence of the bits Расположение бит в регистре или ячейке памяти в возрастающем порядке по номерам бит. Нумерация идет справа налево, начиная с самого младшего, нулевого, разряда двоичного числа.
    установка бита set of the bit Назначение биту в ячейке памяти значения, равного единице.
    сброс бита cleaning the bit Назначение биту в ячейке памяти значения, равного нулю.
    целочисленный регистр integer register Регистр в микропроцессоре, в котором хранятся двоичные целые числа разрядностью в два, четыре или восемь байт. Операции разработки интерфейса и манипулирование символьными данными происходят как раз с использованием целочисленных регистров.
    программный интерфейс приложения API Встроенный в приложение интерфейс (который может быть встроенным языком программирования или библиотекой с функциями для работы с приложением), позволяющий пользователю расширить количество функций (или, по-другому, повысить функциональность) базового приложения. К API относятся языки программирования VBA, VBScript, JScript, ME Script и другие языки программирования.
    Windows API Windows API Библиотека стандартных функций для языков программирования, позволяющая создавать приложения Windows на стандартном языке программирования. В отличие от других библиотек, библиотека Windows API работает на "нижнем" уровне программирования, поэтому созданные с ее помощью программы имеют очень "объемный" код.
    целочисленная арифметика integer arithmetic Арифметические операции, определенные на множестве целых чисел. Результатом целочисленной арифметики являются только целые значения. Поэтому операция деления в ней работает не вполне корректно, а многие функции (например, извлечение корня) в целочисленной арифметике не определены.
    смена знака числа sign of a number replacement Изменение знака ("префикса") числа с "плюса" на "минус" и наоборот. При этом положительное число становится отрицательным и наоборот.
    инкремент (числа) increment (of a number) Увеличение значения числа на единицу.
    декремент decrement Уменьшение значения числа на единицу.
    операция отношения operation of relation Операции с числами и символьными данными, типа: "больше", "меньше", "равно", "не равно", - возвращаемые логические значения: "Истина" или "Ложь". Операции равенства - неравенства не работают в арифметике с плавающей точкой.
    особые ситуации critical conditions См. исключительные ситуации
    исключительные ситуации exceptions Ситуации при работе с целыми и вещественными типами, вызывающие прерывание (отказ) системы, и невозможность выполнения дальнейших расчетов по программе. При обработке исключительных ситуаций можно предусмотреть вмешательство оператора ЭВМ.
    признаки операций attribute of the operations См. признаки результатов и исключительные ситуации. Признаки операций записываются в регистры флагов, откуда считываются операторами условия.
    переполнение 1. overflow 1. Прерывание (программная ошибка), возникающее в случае превышения результатом арифметической операции верхнего или нижнего (отрицательного) предела числа. Эта ошибка является ошибкой выполнения программы.
    переполнение 2. overflow 2. Попытка записать в регистр или ячейку памяти целое число с разрядностью, превышающей разрядность этого регистра или ячейки памяти.
    деление на ноль divide by zero Прерывание (программная ошибка), возникающая в случае арифметического деления на ноль. Эта ошибка является ошибкой выполнения программы.
    исчезновение знака missing of the sign Прерывание (программная ошибка), означающая, что в старший бит регистра (то есть признак знака) был перенос единицы из следующего за ним разряда (бита). Соответствует прерыванию "переполнение" (2), но для целых чисел со знаком.
    ошибка выполнения run-time error Ошибка, возникающая не на этапе разработки программы, а в процессе "тестового прогона" написанной программы. Заметим, что ошибка выполнения - это не всегда ошибка алгоритма, но всегда - ошибка разработчика!
    прерывание interruption Временное или "постоянное" приостановление работы программы в случае нештатной ситуации (ошибки в программе, запроса на ввод данных и т.п.).
    целочисленное деление integer division Операция деления, осуществленная на множестве целых чисел. В отличие от "арифметического" деления при целочисленном делении дробная часть отбрасывается.
    булева алгебра Boolean algebra Раздел математики, изучающий операции с логическими данными, то есть данными, принимающие значения: "истина" и "ложь" ("true" и "false").
    булевы данные Boolean См. логические данные
    логические данные logical data Переменные, принимающие значения: "Истина" ("true") и "Ложь" ("false"). Принято обозначать значение: 'false' = 0, а 'true' = 1 или 'true' <> 0.
    логическая операция Boolean operation Операция, выполняемая в булевой алгебре над логическими данными. К логическим операциям относят: конъюнкцию, дизъюнкцию, отрицание, "исключающее ИЛИ" и др.
    конъюнкция conjunction, AND Операция "логического И", "логического умножения". Осуществляет операцию над булевыми данными, как показано в таблице 05.IV
    дизъюнкция disjunction, OR Операция "логического ИЛИ", "логического сложения". Осуществляет операцию над булевыми данными, как показано в таблице 05.IV
    отрицание negation Операция "логического НЕ", меняющая значение следующей за ней логической переменной на противоположный (с 'true' на 'false', и наоборот).
    логическое "исключающее ИЛИ" XOR Операция над логическими данными, осуществляющая действия, какие показаны в таблице 05.IV
    булевы типы Boolean data types Обозначение логических данных в языках программирования.
    АНИС ANSI Сокращение от аббревиатуры "Американский национальный институт стандартов". Главное учреждение по разработке стандартов в США.
    ANSI C ANSI C Стандарт на язык Си, принятый в начале 90-х годов XX века. Программы, написанные с применением данного стандарта, являются кроссплатформенными (то есть могут, в принципе, работать с любой операционной системой). Все имеющиеся реализации языка Си поддерживают этот стандарт, но имеют также "дополнительные" средства, расширяющие этот стандарт.
    арифметика плавающей точки floating point arithmetic "Обычная" арифметика, реализуемая на компьютере. Имеет некоторые ограничения на операции отношения.
    мантисса mantissa Значащие разряды вещественного числа, записанные в виде последовательности цифр после десятичной точки. См. соответствующий раздел в учебнике.
    порядок order of magnitude Степень числа - основания счисления, на которую надо умножить мантиссу, чтобы получить вещественное число.
    вещественное (число) real (number) Число, представленное целой и дробной частью. В отличие от рационального числа, дробная часть вещественного числа может быть бесконечной.
    основание счисления base of the notation Количество цифр, используемых при представлении чисел. Так, основание десятичной системы счисления (цифры 0-9) равно десяти, двоичной (0-1) - два и т.д.
    одинарная точность float Регистр для представления вещественных чисел с плавающей точкой длиной 4 байта.
    двойная точность double Регистр для представления вещественных чисел длиной 8 байт.
    возведение в степень involution Операция последовательного умножения чисел на самих себя. Возведение числа x в степень y обозначается как x^y.
    возведение в целую степень integer involution Возведение в степень числа x, где y - целая величина. Например: x^0 = 1, x^1 = x, x^2 = xox, x^3 = xoxox, и т.д.
    алгебраические функции algebraic functions Функции для реализации операций возведения в дробную степень, логарифмирования функции, нахождение Бесселевых, сферических и др. функций, требующих вычислений по сложным алгоритмам.
    переполнение порядка order overflow Прерывание, возникающее, если в результате умножения вещественных чисел порядок результата превысил свое максимальное, либо минимальное значение.
    исчезновение порядка missing of the order Прерывание, возникающее при обнулении мантиссы при минимальном значении порядка.
    Вернуться к учебному плану