Сравнение (программирование)

Сравнение (программирование)

Сравне́ние в программировании — общее название ряда операций над па́рами значений одного типа, реализующих математические отношения равенства и порядка. В языках высокого уровня такие операции, чаще всего, возвращают булево значение («истина» или «ложь»).

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

Сравнение скалярных типов данных

При сравнении объектов скалярных (числовых) типов данных сравнивается непосредственно сами хранимые числовые значения. Сами числовые значения, при этом, остаются неизменными.

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

В языках высокого уровня используются логические операторы, которые возвращают (в точку вызова) некоторое значение, которое интерпретируется как логическое

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

  • Проверка на равенство или (=) и неравенство (\ne);
  • Проверка на строгое неравенство (< и >);
  • Проверка на нестрогое неравенство (\leqslant и \geqslant).

В языках высокого уровня, соответственно, реализованы следующие логические операторы:

  • Проверка на равенство (= в Паскале и == в Си) и неравенства (<> в Паскале и != в Си);
  • Отношение строгого порядка (< и >);
  • Отношение нестрогого порядка (<=, >=).

В языках со слабой типизацией возвращаемое значение, обычно, является целым числом так, что нулевое значение интерпретируется как «ложь», а любое отличное от нуля значение — как «истина». В языках с более сильной типизацией вводится специальный логический тип данных (англ. boolean), но возможно приведение других типов к логическому.

Сравнение нечисловых данных

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

  • Сравнение указателей — сравнение значений указателей. Равенство указателей означает, что две переменных указывают на один и тот же объект данных (участок памяти).
  • Сравнение содержимого — сравнение объектов с точки зрения логики на основе знания их содержимого. Например, сравнение строк.

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

Сравнение содержимого, например, сравнение строк, чаще всего встроена в реализацию среды исполнения для языка и может являться частью стандарта. Однако допускается самостоятельная реализация правил сравнения содержимого для пользовательских структур путём перегрузки операторов (Си) или определения (переопределения) методов (Object.equals и интерфейс Comparable в Java). Для встроенных типов данных (например, String) хотя часто нельзя переопределить правила сравнения, их можно настроить с учётом текущей языка и локализации, а также использовать собственные реализации правил сравнения с функциями сортировки (интерфейс Comparator в Java).

Некоторые стандарты, например DOM Level 3, определяет дополнительные типы эквивалентности. В частности, стандарт DOM Level 3 предполагает, что один и тот же элемент документа может быть представлен двумя и более участками в памяти компьютера. Поэтому определяется дополнительная операция isSameNode, которая является проверкой равенства содержимого с точки зрения языка программирования, но фактически является проверкой эквивалентности указателей с точки зрения стандарта DOM.[1]

В некоторых языках в качестве эквивалентных также могут рассматриваться значения близкие по смысловой нагрузке, хотя и имеющие разные типы, например, пустая строка, пустой массив, число 0, нулевой (null) указатель, ложь — имеют смысл пустоты, отрицания.

Примечания




Wikimedia Foundation. 2010.

Игры ⚽ Нужно решить контрольную?

Полезное


Смотреть что такое "Сравнение (программирование)" в других словарях:

  • Сравнение средств разработки для создания мультиагентных систем — Платформа Основное назначение Лицензия Требуемый язык программирования Требуемая ОС Поддержка пользователя Соответствует ли требованиям FIPA Возможности ГИС Трехмерные возможности ABLE …   Википедия

  • ПРОГРАММИРОВАНИЕ — 1) процесс составления программы, плана действий. 2) Раздел информатики, изучающий методы и приёмы составления программ. С долей условности П. как дисциплина разделяется на: теоретическое, изучающее матем. абстракции программ (как объектов с… …   Физическая энциклопедия

  • Сравнение языков программирования — Эту статью следует викифицировать. Пожалуйста, оформите её согласно правилам оформления статей.  Условные обозначения  …   Википедия

  • Сравнение C Sharp и Java — Правильный заголовок этой статьи  Сравнение C# и Java. Он показан некорректно из за технических ограничений. Сравнения языков программирования Общее сравнение Основной синтаксис Основные инструкции Массивы Ассоциативные массивы Операции со… …   Википедия

  • Программирование — Эта статья должна быть полностью переписана. На странице обсуждения могут быть пояснения. У этого термина существуют и другие значения, см. Программи …   Википедия

  • Сравнение браузеров — В этой статье отсутствует вступление. Пожалуйста, допишите вводную секцию, кратко раскрывающую тему статьи. Содержание …   Википедия

  • ПРОГРАММИРОВАНИЕ — 1) процесс составления программы, плана действий; 2) дисциплина, изучающая методы и приемы составления программ. С определенной долей условности П. как дисциплина делится на программирование теоретическое, изучающее математич. абстракции программ …   Математическая энциклопедия

  • Программирование основанное на прототипах — Прототипное программирование стиль объектно ориентированного программирования, при котором отсутствует понятие класса, а повторное использование (наследование) производится путём клонирования существующего экземпляра объекта прототипа.… …   Википедия

  • Сравнение веб-серверов — Здесь приведены веб сервера (программы), предназначенные в первую очередь для работы с протоколом HTTP. Прим.: термин «родной сервер» (англ. origin server) в данном списке и документациях используется для отличия серверов первоисточников от… …   Википедия

  • ПРОГРАММИРОВАНИЕ НА ЭВМ — процедура составления и отладки программ для ЭВМ. Программа это упорядоченный набор операций (команд) по преобразованию информации алгоритм, записанный на языке программирования (см.), к рый должен быть выполнен вычислительной машиной. Существует …   Российская социологическая энциклопедия


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»