Алгоритм Луна (Luhn Algorithm)

 

В функции ValidateCard применяется алгоритм, названный алгоритмом Луна, который разработал специалист компании IBM в 1960 гг. Алгоритм Луна действует, т. к. компании, выпускающие кредитные карты, следуют его правилам. Другими словами, они выпускают только такие номера, которые считаются допустимыми с точки зрения алгоритма Луна.

Полное объяснение алгоритма Луна можно найти на Web-странице http://en.wikipedia.org/wiki/Luhn_algorithm. Далее приведено описание его принципа действия в версии журнала "Reader’s Digest".

1.           Удвойте каждую вторую цифру номера кредитной карты, начиная с последней цифры номера. Оставьте все цифры с четным2 номером неизменными. Например, номер 1111 превратится вномер2121.

2.           Если в процессе удвоения получается число большее 9, сложите две цифры полученного результата вместе и поставьте их на место исходной цифры. Например, номер 1166 превратится в номер 2136. Вторая от конца цифра 6 была удвоена (до 12) и цифры результата (1 и 2) сложили вместе (для получения 3).

3.           Сложите все цифры получившегося номера вместе. Если у вас в данный момент номер 2136, сложите вместе 2+1+3+6 (что даст 12).

4.           Если результат заканчивается 0 (или иначе, если он кратен 10), номер карты допустимый. В противном случае — нет.

Алгоритм Луна проверяет, может ли предоставленный вами номер быть номером реальной кредитной карты. Но он делает только то, что делает. Этот алгоритм не может обнаружить номер кредитной карты, технически приемлемый, но на самом деле не присвоенный никакому банковскому счету (и ясно, что не может определить финансовое положение владельца счета и наличие на счету требуемого для покупки лимита).

 

Далее приведен полный программный код функции ValidateCard. Все строки кода пронумерованы, поэтому вы можете разбить его на элементарные порции (построчные объяснения даются после кода):

1       Function ValidateCard(CardNumber As String)

‘ Это промежуточный итог (создаваемый с помощью алгоритма Луна)

2             Dim SumOfDigits

3             SumOfDigits = 0

‘ Эта переменная определяет, в какой вы находитесь позиции,

‘  нечетной или четной.

‘ Вы начинаете с нечетной позиции (1)

4             Dim OddNumbered

5             OddNumbered = True

Рис. 17.7. Для добавления ссылки на компонент, который хотите использовать, найдите его в списке и затем установите флажок, расположенный рядом с ним. Компоненты, на которые есть ссылки в данный момент, приведены в верхней части списка. Здесь показаны объекты, на которые автоматически устанавливаются ссылки в каждой БД, — объекты, встроенные в язык Visual Basic и поставляемые вместе с программой Access, и объекты доступа к данным, которые можно применять для непосредственного чтения и редактирования БД

 

Позже в этой главе вы узнаете, как использовать DAO (Data Access Objects, объекты доступа к данным) для взаимодействия с вашей БД. Технология DAO — настолько популярная составляющая программирования в Access, что большинство считают эту библиотеку встроенной частью объектной модели Access. Однако технически DAO состоит из набора объектов,

 

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

Для применения нового компонента необходимо добавить ссылку на него в вашу БД. Для этого в меню редактора Visual Basic выберите последовательность команд Tools > References (Сервис > Ссылки). Вы увидите диалоговое окно References, показанное на рис. 17.7.

Проблема диалогового окна References заключается в том, что вам нужно точно знать, какой компонент вы хотите использовать. Список Available References (доступные ссылки) полон компонентов со звучными именами, которые не предназначены для использования в программе Access и не будут корректно работать с вашим программным кодом. Среди компонентов, которыми можно воспользоваться, есть компоненты Microsoft, позволяющие взаимодействовать с другими приложениями пакета Office. Но, самостоятельно экспериментируя, вы не многого добьетесь. Следует найти пример кода в Интернете или в справочной системе программы Access.

 

 

Вы можете следить за любыми ответами на эту запись через RSS 2.0 ленту. Вы можете оставить ответ, или trackback с вашего собственного сайта.

Оставьте отзыв

XHTML: Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

 
Rambler's Top100