Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Русский_Проект: Изучение Visual Basic


Служба Рассылок Subscribe.Ru проекта Citycat.Ru
Русский_Проект: Рассылка Содержание
Задачи по VB
Функции API

Здравствуйте!

Задачи по VB

Итак, продолжим разговор о задачах. Сначала о предыдущем задании. Нужно было поменять содержимое строковых переменных без использования третьей переменной. Задачка оказалась легкой для многих. Первым правильный ответ прислала Ольга(alpha@...). Мои поздравления! Ответ находится на сайте в разделе Ответы. По поводу задачи о палиндромах. Вот что, к примеру, пишет некто Vitos
Хотя я и хотел закрыть тему о них, но код Сократа мне не позволил. Дело в том, что Сократ, да и не только он, сначала переворачивает фразу, а потом сверяет её с оригиналом, ИМХО, так делать КАТЕГОРИЧЕСКИ нельзя, потому что если фраза будет очень большая, например, 100000 букв, то машина встанет надолго!!! Данные алгоритмы в большинстве случаев делают лишнюю работу!!! Необходимо двигаться с обоих концов фразы, сравнивая каждый символ, если они различны, то фраза не является полиндромом и дальнейшая проверка бессмысленна. Вот мой исправленный вариант:
Public Function fPolindrom(s As String) As Boolean
    Dim i As Integer, c As Integer
    Dim sCharOne As String * 1, sCharTwo As String * 1
    c = Len(s)
    Do While i < c
        Do
            i = i + 1
            sCharOne = UCase(Mid$(s, i, 1))
        Loop While sCharOne = " " Or sCharOne = "," Or sCharOne = "." Or _
                    sCharOne = "-" Or sCharOne = "!" Or sCharOne = "?" Or _
                    sCharOne = ";" Or sCharOne = ":" Or sCharOne = """"

        Do
            sCharTwo = UCase(Mid$(s, c, 1))
            c = c - 1
        Loop While sCharTwo = " " Or sCharTwo = "," Or sCharTwo = "." Or _
                    sCharTwo = "-" Or sCharTwo = "!" Or sCharTwo = "?" Or _
                    sCharTwo = ";" Or sCharTwo = ":" Or sCharTwo = """"

        If sCharOne <> sCharTwo Then Exit Function 'VOT ETO SAMOE GLAVNOE
    Loop
    fPolindrom = True
End Function

Несмотря на больший обьём кода, функция работает быстрее всех приведённых, а всё из-за АЛГОРИТМА

Мой комментарий. Если вы поклонник алгоритмов, оптимизаци, а также уверены, что вам попадется палиндром длиной 100 тысяч букв, то код Vitosa - ваш выбор!

Новое задание
Дано число в двоичном счислении A2. Переведите это число в восьмиричное счисление A8. Проверить свой алгоритм вы можете встроенного калькулятора (Выберите Вид->Инженерный). Но сначала немного теории. Сначала изучите таблицу соответствия первых восьми чисел

Двоичное число-Восьмеричное число
0-0
1-1
10-2
11-3
100-4
101-5
110-6
111-7
Перевод двоичного числа в восьмеричный осуществляется следующим образом - разбиваем двоичное число на группы по три цифры справо налево. Затем выравниваем число. Выравнивание - это обычное дописывание требуемого числа нулей перед старшим разрядом. И наконец, заменяем получившиеся триады двоичных числе восьмеричным числом. Поясню на примере.
Дано двоичное число 1101111. Разбиваем его на группы по три цифры
1 101 111
Выравниваем число(дописываем нули)
001 101 111
А теперь используем вышеприведенную таблицу и заменяем числа
001=1
101=5
111=7
1101111=157
Принцип понятен? Не забудьте сопровождать свой код комментариями. Поверьте, даже самый простой код через полгода может оказаться не очень простым, а еще через полтора года и вовсе непонятым. Ответы принимаются по адресу wwwind@aport.ru
Удачи!

Функции API

FlashWindowEx

FlashWindowEx - одна из новых функций, появившихся в Windows 98. FlashWindowEx заставляет мигать указанное окно. Функция не изменяет активности окна. Функция используется для привлечения внимания пользователя к окну, не имеющему фокуса ввода. При мигании происходит изменение цвета статуса активного окна на неактивное и наоборот

Параметры pfwi
- Указатель на структуру FLASHWINFO, содержащую информацию о состоянии мигающего окна

Пример

' Окно мигает 5 раз для привлечения внимания
Dim FlashInfo As FLASHWINFO
' Определяем размер структуры
FlashInfo.cbSize = Len(FlashInfo)
' Определяем статус мигания
FlashInfo.dwFlags = FLASHW_ALL Or FLASHW_TIMER
' Определяем частоту мигания равной миганию каретки
FlashInfo.dwTimeout = 0
' Дескриптор окна для мигания
FlashInfo.hwnd = Me.hwnd
' Число миганий
FlashInfo.uCount = 5
FlashWindowEx FlashInfo
Полный текст с описанием этой функции вы найдете в новой версии справочника по функциям API, который скоро появится на сайте!

Не стесняйтесь, высылайте ваши предложения по адресу vbasic@rambler.ru
Посетите сайт Русский_Проект, где вы найдете другую интересную информацию
Давайте делать рассылку вместе! Удачи!



http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу
Рейтингуется SpyLog

В избранное