Изменение характера разработок привело к необходимости создания новых языков программирования.
Элементы объектно-ориентированного программирования возникло к началу 90-х годов, в основе лежат понятия объект и класс, а определяющими характеристиками являются наследование и полиморфизм. Программы обрабатывали совокупность объектов, имеющих атрибуты, значения которых определяют его состояние. Объект является реализацией класса. Класс определяет общие характеристики для всех объектов. Код и данные организуются так, чтобы имелась возможность имитировать поведение объектов. Основными являются понятия:
Шестая версия Visual Basic является событийно-управляемым объектно-базирующимся языком, не доходящим до уровня объектно-ориентированного. Объектно-ориентированным делает язык сильно развитые составляющие - наследование и полиморфизм.
Класс содержит компоненты - свойства, поля, методы и события; класс есть шаблон объекта и можно создавать объекты - экземпляры класса. С использованием модуля класса объекту передаeтся структура класса. С помощью свойств, полей, методов и событий объект реагирует на действия системы, пользователя, приложения. Модуль класса можно ввести в проект командой: меню Проект $$\to$$ Добавить модуль класса/соответствующей кнопкой панели инструментов/с использованием контекстного меню Окна проекта.
С помощью процедур Property можно cоздавать свойства класса; их можно присваивать (Let) и считывать (Get). Если использовать для создания процедур Property окно Инструменты $$\to$$ Добавить процедуру, то создаются инструкции описания обеих процедур (Property Let и Get).
Методы - это процедуры, содержащиеся в классе и действующие на объект. Метод может быть создан и с помощью Мастера классов.
События служат для обеспечения реакции объекта на внешние воздействия. Cобытие может быть создано аналогично созданию процедур Sub,
После создания компонентов класса его можно использовать. В проектах используются объекты, созданные на основе класса; способы создания:
Dim оbject As New Class1 ' создание объекта класса Class1 или: Dim оbject As Class1 Set оbject = New Class1
Проект с классом должен включать две процедуры Class_Initialize () для подготовительных действий и Class_Terminate () для завершающих действий. Для удаления ссылки на объект после выполнения процедур (удаление объекта из памяти) используется ключевое слово Nothing: Set object = Nothing
Объекты могут объединяться в логические единицы. На набор таких элементов - объект Сollection можно ссылаться как на единое целое. Свойство Count определяет число элементов, метод Add служит для добавления объектов, метод Remove - для удаления. Семейства можно создавать также с помощью Мастера классов.
Классы можно создавать с помощью Мастера классов следующим образом:
Standard.EXE,Class Builder Utility, мастер классов стартует после щелчка на этой команде.Другой способ старта мастера: меню Проект $$\to$$ Добавить модуль класса $$\to$$ в выведенном диалоговом окне выбрать VB Class Builder,
Class Builder, с его помощью создаeтся класс:Аналогично создаются события (в этом случае используется Event Builder),
Создание компонентов класса, создание экземпляра класса рассматривается на примере проекта, дающего справку (минимальные данные, служащие для демонстрации) желающим провести отпуск за границей. Пользователь должен сделать щелчок на соответствующем элементе массива OptionButton, если он хочет быть в отпуске за границей; далее в списке ComboBox выбрать страну, после чего выводится список городов, где можно провести отпуск и соответствующая стоимость, рис. 8.1.
В данном случае создаeтся класс с 4 свойствами и 3 методами. Далее на основе класса создаeтся объект:
Dim object As Class1 Set object = New Class1
Созданный объект нужно после работы удалить из памяти: см. код процедуры Form_Unload().
Последовательность действий:
Class_Initialize (),Public Function Met1(), Public Function Met2() и Public Function Met3 (). Ввести этот код, пояснения даны под комментариями к коду,Form_Load () и код процедуры Command1_Click (), стартовать проект, проверить его работу.' описание переменной, используемой при принятии решения, ' хочет ли пользователь ехать за границу Public Urlaub As Boolean Public STAAT As String ' страна, выбранная пользователем Public Ort As String ' город, имеющийся в списке стран Public Kosten As String ' стоимость поездки Private Sub Class_Initialize() ' инициализация свойств класса Urlaub = False: STAAT = "" : Ort = "": Kosten = "" End Sub Public Function Met1() As Boolean ' если пользователь нажал кнопку OptionButton (Ja), то ' выполнить процедуры Met2 и Met3, результатом ' работы которых является вывод данных: город и ' стоимость, иначе Met1 = False и выводится ' сообщение "Hier gibt man Auskunft ueber Urlaub im ' Ausland" - "Справки выдаются желающим ' отдыхать за границей" If Urlaub = True Then Ort = Met2() Kosten = Met3() Met1 = True Else Met1 = False End If End Function ' после щелчка на кнопке Ja/Nein (массив переключателей), ' рис. 8.1 и выбора страны в списке ComboBox ' (Name = STAAT, слева надпись: "Staat auswaehlen!") ' вывести место отдыха Public Function Met2() As String Select Case STAAT Case "SPANIEN": Met2 = "MADRID" Case "ENGLAND": Met2 = "LONDON" Case "SCHWITZERLAND": Met2 = "GENF" End Select End Function Public Function Met3() As String ' вывести стоимость Select Case STAAT Case "SPANIEN": Met3 = "500 $" Case "ENGLAND": Met3 = "800 $" Case "SCHWITZERLAND": Met3 = "1000 $" End Select End Function
Dim url As Class1 ' описать объект Private Sub Form_Load() ' создать объект Set url = New Class1 ' заполнить список ComboBox названиями трeх стран STAAT.AddItem "SPANIEN": STAAT.AddItem "ENGLAND" STAAT.AddItem "SCHWITZERLAND" End Sub Private Sub Command1_Click() ' вывести справочные данные Dim stri As String ' описание аргумента функции MsgBox ' значение свойства STAAT объекта url взять из списка поля ' ComboBox url.STAAT = STAAT.Text ' значени свойства Urlaub объекта url взять из поля массива ' OptionButton url.Urlaub = Option1(0).Value If url.Met1 = True Then ' вывод справочных данных stri = CStr(url.Ort) vbCrLf: stri = stri CStr(url.Kosten) MsgBox stri Else stri = "Hier gibt man Auskunft ueber Ublaub im Ausland" MsgBox stri End If End Sub ' удалить объект из памяти Private Sub Form_Unload(Cancel As Integer) Set url = Nothing End Sub
(рис 8.1) Работа с классом
Рассматриваются следующие группы ошибок:
Обработчик ошибок состоит из 3-х частей: оператор On Error GoTo в начале подпрограммы/функции, который сообщает, что следует предпринять при возникновении ошибки, код обработчика и оператор выхода из обработчика, указывающий, куда перейти после обработки ошибки; в этом отношении рассмативаются следующие варианты:
Private Sub Command1_Click() ' в случае ошибки перейти к локальному обработчику ошибок On Error GoTo LocalHandler Dim x As Byte, str As String ' описание переменных ' задать значение х, не соответствующее описанному выше ' типу данных X = -7 GoTo LocalExit ' выйти из процедуры, если ошибки не было LocalHandler: ' простейший обработчик выводит номер ошибки и пояснения str = CStr(Err.Number) " - " Err.Description MsgBox str, vbCritical, " Command1" Resume Next ' продолжить выполнение со следующей строки LocalExit: End Sub
Использование команды Resume приводит к повторному выполнению строки, содержащей ошибку; команду целесообразно использовать, если есть уверенность, что ошибка исправима.
Private Sub Command2_Click()
' в случае ошибки перейти к локальному обработчику ошибок
On Error GoTo LocalHandler
Dim x As Byte, str As String ' описание переменных
' ввести число, не соответствующее описанному выше типу
' данных
х = InputBox("Enter a Byte")
GoTo LocalExit ' выйти из процедуры, если ошибки не было
LocalHandler:
' обработчик выводит номер ошибки и пояснение
str = CStr(Err.Number) "-" Err.Description
MsgBox str, vbCritical, "Command2"
' продолжить выполнение cо строки, содержавшей ошибку
Resume
LocalExit:
End Sub
Resume Next целесообразно использовать, если пользователь уверен, что программма будет эффективно работать после устранения ошибки.
Private Sub Command3_Click()
On Error GoTo LocalHandler
Dim x As Byte, str As String, mess As Long
x = InputBox("Enter a Byte")
MsgBox "x = " + CStr(x)
GoTo LocalExit
LocalHandler:
If Err.Number = 6 Then
str = "You have entered not Byte:" vbCrLf
str = str "The program will now set 25." vbCrLf
' выбрать YES, чтобы программно было установлено
' значение 25
str = str "Select YES to set 25." vbCrLf
' выбрать NO, чтобы вновь вернуться к вводу числа
str = str "NO - to return to enter a new value."
mess = MsgBox(str, vbCritical + vbYesNo, "Command3")
If mess = vbYes Then
x = 25
Resume Next
Else
Resume
End If
End If
LocalExit:
End Sub
(рис 8.2) Обработчики ошибок
Имеются три кнопки, используемые для выполнения программ: Запуск - Start, Прерывание - Break и Остановка - End, рис. 8.3. При отладке нужно установить, с какого предположительно места программа не работает, после этого нужно остановить выполнение программы щелчком на кнопке Break, затем перейти непосредственно к работе с самой программой - найти ту инструкцию, которая содержит ошибку. Стартовать приложение можно кнопкой Start, нажатием клавиши F5 или использовать команды меню Запуск (Запуск или Запуск с полной компиляцией). Переход в
Особенность режима отладки состоит в том, что выполнение программы приостанавливается в области возникновения ошибки, при этом сохраняются значения всех текущих переменных. Панель отладки изображена на рис. 8.3. Вывод панели проводится следующим образом: меню Вид $$\to$$ Панели $$\to$$ Отладить.
(рис 8.3) Панель Отладить
Ниже приведены названия кнопок панели:
Инструменты отладки используются в режиме отладки. Точка останова - Breakpoint это выделенная строка программы, на которой выполнение останавливается (переход в
Visual Basic выделяет желтым цветом строку, которая должна выполняться - это полоса индикатора , рядом с ней выводится желтая стрелка. Если выполнение программы прерывается в точке останова, то две строки красная и жeлтая комбинируются. Клавиша F8 позволяет перемещать (пошагово) жeлтую полосу в режиме Продолжить. В режиме отладки программы выполняются пошагово.
Кнопка Step Into (
Кнопка Step Over (Переход за процедуру) (используйте также клавиши Shift+F8) и соответствующая команда меню Отладка позволяет "перескакивать подпрограммы без захода".
Кнопка Step Out (Выход из процедуры) и соответствующая команда меню Отладка используется, если при выполнении процедуры произошeл ошибочный вход в вызываемую процедуру или если оставшуюся часть процедуры не нужно выполнять пошагово.
Если при поиске ошибок нужно знать последовательность вызова процедур, то следует использовать окнo Call Stack. Здесь отображeн список имен всех выполняемых в данный момент процедур.
Важной задачей является проверка значений выражений или переменных. Контроль возможен только в определенных местах (значение локальных переменных можно проверить только в процедуре, в которой она объявлена, иначе появится сообщение: "Out of context"). Для просмотра значений переменных и выражений с помощью окна Data Tips нужно установить курсор на соответствующем выражении, пример выведенного сообщения: Angle = 30.
Всплывающая подсказка QickInfo отображает синтаксис функции, оператора, метода или процедуры, выбираемых в окне кода, пример выведенного сообщения: Local fSinus As Single.
Всплывающее окно ParameterInfo даeт информацию о параметрах текущей функции, которая является параметром процедуры, пример выведенного сообщения: Sin(Number As Double) As Double.
При использовании для просмотра значений выражений окна Quick Watch курсор должен находиться на имени контролируемой переменной. Добавить переменную для осуществления контроля в окно просмотра Add Watch можно из диалогового окна Quick Watch кнопкой Add. Можно использовать и окно Edit Watch для редактирования/удаления выражений.
Пользователю предоставлены средства отладки: Watch Window - окно контрольного значения содержит список контролируемых выражений и их текущие значения, а также объекты (можно просмотреть значения всех свойств), Immediate Window даeт возможность выполнять однострочные операторы, окно локальных переменных - Locals Window содержит все объявленные переменные, их значения для текущей процедуры.
Изменение характера разработок привело к необходимости создания новых языков программирования.
Элементы объектно-ориентированного программирования возникло к началу 90-х годов, в основе лежат понятия объект и класс, а определяющими характеристиками являются наследование и полиморфизм. Программы обрабатывали совокупность объектов, имеющих атрибуты, значения которых определяют его состояние. Объект является реализацией класса. Класс определяет общие характеристики для всех объектов. Код и данные организуются так, чтобы имелась возможность имитировать поведение объектов. Основными являются понятия:
Шестая версия Visual Basic является событийно-управляемым объектно-базирующимся языком, не доходящим до уровня объектно-ориентированного. Объектно-ориентированным делает язык сильно развитые составляющие - наследование и полиморфизм.
Класс содержит компоненты - свойства, поля, методы и события; класс есть шаблон объекта и можно создавать объекты - экземпляры класса. С использованием модуля класса объекту передаeтся структура класса. С помощью свойств, полей, методов и событий объект реагирует на действия системы, пользователя, приложения. Модуль класса можно ввести в проект командой: меню Проект $$\to$$ Добавить модуль класса/соответствующей кнопкой панели инструментов/с использованием контекстного меню Окна проекта.
С помощью процедур Property можно cоздавать свойства класса; их можно присваивать (Let) и считывать (Get). Если использовать для создания процедур Property окно Инструменты $$\to$$ Добавить процедуру, то создаются инструкции описания обеих процедур (Property Let и Get).
Методы - это процедуры, содержащиеся в классе и действующие на объект. Метод может быть создан и с помощью Мастера классов.
События служат для обеспечения реакции объекта на внешние воздействия. Cобытие может быть создано аналогично созданию процедур Sub,
После создания компонентов класса его можно использовать. В проектах используются объекты, созданные на основе класса; способы создания:
Dim оbject As New Class1 ' создание объекта класса Class1 или: Dim оbject As Class1 Set оbject = New Class1
Проект с классом должен включать две процедуры Class_Initialize () для подготовительных действий и Class_Terminate () для завершающих действий. Для удаления ссылки на объект после выполнения процедур (удаление объекта из памяти) используется ключевое слово Nothing: Set object = Nothing
Объекты могут объединяться в логические единицы. На набор таких элементов - объект Сollection можно ссылаться как на единое целое. Свойство Count определяет число элементов, метод Add служит для добавления объектов, метод Remove - для удаления. Семейства можно создавать также с помощью Мастера классов.
Классы можно создавать с помощью Мастера классов следующим образом:
Standard.EXE,Class Builder Utility, мастер классов стартует после щелчка на этой команде.Другой способ старта мастера: меню Проект $$\to$$ Добавить модуль класса $$\to$$ в выведенном диалоговом окне выбрать VB Class Builder,
Class Builder, с его помощью создаeтся класс:Аналогично создаются события (в этом случае используется Event Builder),
Создание компонентов класса, создание экземпляра класса рассматривается на примере проекта, дающего справку (минимальные данные, служащие для демонстрации) желающим провести отпуск за границей. Пользователь должен сделать щелчок на соответствующем элементе массива OptionButton, если он хочет быть в отпуске за границей; далее в списке ComboBox выбрать страну, после чего выводится список городов, где можно провести отпуск и соответствующая стоимость, рис. 8.1.
В данном случае создаeтся класс с 4 свойствами и 3 методами. Далее на основе класса создаeтся объект:
Dim object As Class1 Set object = New Class1
Созданный объект нужно после работы удалить из памяти: см. код процедуры Form_Unload().
Последовательность действий:
Class_Initialize (),Public Function Met1(), Public Function Met2() и Public Function Met3 (). Ввести этот код, пояснения даны под комментариями к коду,Form_Load () и код процедуры Command1_Click (), стартовать проект, проверить его работу.' описание переменной, используемой при принятии решения, ' хочет ли пользователь ехать за границу Public Urlaub As Boolean Public STAAT As String ' страна, выбранная пользователем Public Ort As String ' город, имеющийся в списке стран Public Kosten As String ' стоимость поездки Private Sub Class_Initialize() ' инициализация свойств класса Urlaub = False: STAAT = "" : Ort = "": Kosten = "" End Sub Public Function Met1() As Boolean ' если пользователь нажал кнопку OptionButton (Ja), то ' выполнить процедуры Met2 и Met3, результатом ' работы которых является вывод данных: город и ' стоимость, иначе Met1 = False и выводится ' сообщение "Hier gibt man Auskunft ueber Urlaub im ' Ausland" - "Справки выдаются желающим ' отдыхать за границей" If Urlaub = True Then Ort = Met2() Kosten = Met3() Met1 = True Else Met1 = False End If End Function ' после щелчка на кнопке Ja/Nein (массив переключателей), ' рис. 8.1 и выбора страны в списке ComboBox ' (Name = STAAT, слева надпись: "Staat auswaehlen!") ' вывести место отдыха Public Function Met2() As String Select Case STAAT Case "SPANIEN": Met2 = "MADRID" Case "ENGLAND": Met2 = "LONDON" Case "SCHWITZERLAND": Met2 = "GENF" End Select End Function Public Function Met3() As String ' вывести стоимость Select Case STAAT Case "SPANIEN": Met3 = "500 $" Case "ENGLAND": Met3 = "800 $" Case "SCHWITZERLAND": Met3 = "1000 $" End Select End Function
Dim url As Class1 ' описать объект Private Sub Form_Load() ' создать объект Set url = New Class1 ' заполнить список ComboBox названиями трeх стран STAAT.AddItem "SPANIEN": STAAT.AddItem "ENGLAND" STAAT.AddItem "SCHWITZERLAND" End Sub Private Sub Command1_Click() ' вывести справочные данные Dim stri As String ' описание аргумента функции MsgBox ' значение свойства STAAT объекта url взять из списка поля ' ComboBox url.STAAT = STAAT.Text ' значени свойства Urlaub объекта url взять из поля массива ' OptionButton url.Urlaub = Option1(0).Value If url.Met1 = True Then ' вывод справочных данных stri = CStr(url.Ort) vbCrLf: stri = stri CStr(url.Kosten) MsgBox stri Else stri = "Hier gibt man Auskunft ueber Ublaub im Ausland" MsgBox stri End If End Sub ' удалить объект из памяти Private Sub Form_Unload(Cancel As Integer) Set url = Nothing End Sub
(рис 8.1) Работа с классом
Рассматриваются следующие группы ошибок:
Обработчик ошибок состоит из 3-х частей: оператор On Error GoTo в начале подпрограммы/функции, который сообщает, что следует предпринять при возникновении ошибки, код обработчика и оператор выхода из обработчика, указывающий, куда перейти после обработки ошибки; в этом отношении рассмативаются следующие варианты:
Private Sub Command1_Click() ' в случае ошибки перейти к локальному обработчику ошибок On Error GoTo LocalHandler Dim x As Byte, str As String ' описание переменных ' задать значение х, не соответствующее описанному выше ' типу данных X = -7 GoTo LocalExit ' выйти из процедуры, если ошибки не было LocalHandler: ' простейший обработчик выводит номер ошибки и пояснения str = CStr(Err.Number) " - " Err.Description MsgBox str, vbCritical, " Command1" Resume Next ' продолжить выполнение со следующей строки LocalExit: End Sub
Использование команды Resume приводит к повторному выполнению строки, содержащей ошибку; команду целесообразно использовать, если есть уверенность, что ошибка исправима.
Private Sub Command2_Click()
' в случае ошибки перейти к локальному обработчику ошибок
On Error GoTo LocalHandler
Dim x As Byte, str As String ' описание переменных
' ввести число, не соответствующее описанному выше типу
' данных
х = InputBox("Enter a Byte")
GoTo LocalExit ' выйти из процедуры, если ошибки не было
LocalHandler:
' обработчик выводит номер ошибки и пояснение
str = CStr(Err.Number) "-" Err.Description
MsgBox str, vbCritical, "Command2"
' продолжить выполнение cо строки, содержавшей ошибку
Resume
LocalExit:
End Sub
Resume Next целесообразно использовать, если пользователь уверен, что программма будет эффективно работать после устранения ошибки.
Private Sub Command3_Click()
On Error GoTo LocalHandler
Dim x As Byte, str As String, mess As Long
x = InputBox("Enter a Byte")
MsgBox "x = " + CStr(x)
GoTo LocalExit
LocalHandler:
If Err.Number = 6 Then
str = "You have entered not Byte:" vbCrLf
str = str "The program will now set 25." vbCrLf
' выбрать YES, чтобы программно было установлено
' значение 25
str = str "Select YES to set 25." vbCrLf
' выбрать NO, чтобы вновь вернуться к вводу числа
str = str "NO - to return to enter a new value."
mess = MsgBox(str, vbCritical + vbYesNo, "Command3")
If mess = vbYes Then
x = 25
Resume Next
Else
Resume
End If
End If
LocalExit:
End Sub
(рис 8.2) Обработчики ошибок
Имеются три кнопки, используемые для выполнения программ: Запуск - Start, Прерывание - Break и Остановка - End, рис. 8.3. При отладке нужно установить, с какого предположительно места программа не работает, после этого нужно остановить выполнение программы щелчком на кнопке Break, затем перейти непосредственно к работе с самой программой - найти ту инструкцию, которая содержит ошибку. Стартовать приложение можно кнопкой Start, нажатием клавиши F5 или использовать команды меню Запуск (Запуск или Запуск с полной компиляцией). Переход в
Особенность режима отладки состоит в том, что выполнение программы приостанавливается в области возникновения ошибки, при этом сохраняются значения всех текущих переменных. Панель отладки изображена на рис. 8.3. Вывод панели проводится следующим образом: меню Вид $$\to$$ Панели $$\to$$ Отладить.
(рис 8.3) Панель Отладить
Ниже приведены названия кнопок панели:
Инструменты отладки используются в режиме отладки. Точка останова - Breakpoint это выделенная строка программы, на которой выполнение останавливается (переход в
Visual Basic выделяет желтым цветом строку, которая должна выполняться - это полоса индикатора , рядом с ней выводится желтая стрелка. Если выполнение программы прерывается в точке останова, то две строки красная и жeлтая комбинируются. Клавиша F8 позволяет перемещать (пошагово) жeлтую полосу в режиме Продолжить. В режиме отладки программы выполняются пошагово.
Кнопка Step Into (
Кнопка Step Over (Переход за процедуру) (используйте также клавиши Shift+F8) и соответствующая команда меню Отладка позволяет "перескакивать подпрограммы без захода".
Кнопка Step Out (Выход из процедуры) и соответствующая команда меню Отладка используется, если при выполнении процедуры произошeл ошибочный вход в вызываемую процедуру или если оставшуюся часть процедуры не нужно выполнять пошагово.
Если при поиске ошибок нужно знать последовательность вызова процедур, то следует использовать окнo Call Stack. Здесь отображeн список имен всех выполняемых в данный момент процедур.
Важной задачей является проверка значений выражений или переменных. Контроль возможен только в определенных местах (значение локальных переменных можно проверить только в процедуре, в которой она объявлена, иначе появится сообщение: "Out of context"). Для просмотра значений переменных и выражений с помощью окна Data Tips нужно установить курсор на соответствующем выражении, пример выведенного сообщения: Angle = 30.
Всплывающая подсказка QickInfo отображает синтаксис функции, оператора, метода или процедуры, выбираемых в окне кода, пример выведенного сообщения: Local fSinus As Single.
Всплывающее окно ParameterInfo даeт информацию о параметрах текущей функции, которая является параметром процедуры, пример выведенного сообщения: Sin(Number As Double) As Double.
При использовании для просмотра значений выражений окна Quick Watch курсор должен находиться на имени контролируемой переменной. Добавить переменную для осуществления контроля в окно просмотра Add Watch можно из диалогового окна Quick Watch кнопкой Add. Можно использовать и окно Edit Watch для редактирования/удаления выражений.
Пользователю предоставлены средства отладки: Watch Window - окно контрольного значения содержит список контролируемых выражений и их текущие значения, а также объекты (можно просмотреть значения всех свойств), Immediate Window даeт возможность выполнять однострочные операторы, окно локальных переменных - Locals Window содержит все объявленные переменные, их значения для текущей процедуры.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.