Учебник по autoit 17

В интернете существует запрос на учебник по autoit.Я хочу попытаться в некотором роде восполнить этот запрос.
Программирование на бейсике  начинается с объявления переменной.Переменная - это область памяти,из которой можно либо считывать информации либо перезаписывать информацию.В большинстве случаев такой информацией являются целые числа,так как компьютер заточен на работу именно с числовыми данными.Хотя autoit  и поддерживает строковые данные,но на самом деле в компьютере они представляются в виде определенных чисел,каждому символу соответствует свой числовой код.Поэтому становится тривиальной задачей сравнивать символ с символом на равенство и неравенство - на компьютере это представляет собой сравнивание одного целого числа с другим.
Чтобы начать писать программы на autoit необходимо научиться работать с текстовыми файлами в операционной системе,ибо программа это ничто иное,как текстовый файл.
Набрав текст программы - его сохраняют на жесткий диск с расширением au3 - любой файл программы на autoit должен заканчиваться этим расширением.Обычно в контекстном меню рабочего стола в разделе - Создать - можно выбрать пункт - AutoIt v3 Script,который создаёт файл с именем AutoIt v3 Script.au3.Само имя файла потом можно сменить.Если программа является однофайловой,то не имеет значение,какое имя у неё.

Выше я уже поднимал вопрос по переменным.Теперь продолжим изучение этого предмета при программировании на бейсике.
В autoit существует два оператора объявления переменных Local и Global.
Local используется,как легко понять из названия самого оператора, для объявления локальных переменных.Global используется для объявления глобальных переменных.Обычно локальные переменные определяются в какой-либо отдельной функции и только в ней и существуют.
Вообще локальные и глобальные переменные является основными объектами,которые используются при построении программ любой сложности,их достаточно для любых мыслимых нужд программирования.

Следующим важным шагом в овладении программированием на autoit являются функции.Функции - это по сути отдельная подпрограмма и может многократно вызываться для выполнения своего кода,хотя и располагается в одном определённом месте потока выполнения.

Каждая функция имеет имя,по которому программисту её нужно вызывать.Синтаксис функции выглядит так:
func имя функции
здесь инструкции
endfunc

Чтобы вызвать функцию необходимо набрать её имя и поставить круглые скобки,как открывающую,так и закрывающую.
Также функция может получать параметры через запятую.Параметры назначаются в круглых скобках.
Чтобы возвратить значение из функции используется оператор return.Когда функция возвращает значение,тогда прекращает своё выполнение и переходит в место своего вызова.

Вообще функции должны быть лаконичны и выполнять определенную задачу.Понятно,что задача может делать сразу множество действий,но навряд ли это правильный подход программирования.
Для вывода какой-либо информации на экран в autoit используется функция msgbox.
MsgBox(0, "Сообщение", "Привет,я программа autoit")
Для ввода информации подойдёт функция inputbox.
Local $result = inputbox("Вопрос","Как вас зовут?")
MsgBox(0, "", "привет "&$result)
Самый простой способ соединения строк в autoit является использование знака амперсанда,что и отражено в предыдущем исходнике.

Важной темой в программировании является оператор ветвления,который позволяет выполнять какие-либо действия по определенному условию.
Самым простым ветвлением в autoit является конструкция if then endif.
Использовать эту конструкцию можно так:

Local $result = inputbox("Вопрос","Как зовут твою кошку ?")
if $result = "Муся" then
MsgBox(0, "", "Муся - " & "это хорошее имя для кошки ")
endif

Вторым важным вариантов ветвления является if then else endif.

Local $result = inputbox("Вопрос","Как зовут твою кошку ?")
if $result = "Муся" then
MsgBox(0, "", "Муся - " & "это хорошее имя для кошки ")
else
MsgBox(0, "", "Имя вашей  кошки не Муся ")
endif

Для выполнения множественного ветвления используется конструкция If ElseIf then Else EndIf.

Local $result = inputbox("Вопрос","Как зовут твою кошку ?")
if $result = "Муся" then
MsgBox(0, "", "Муся - " & "это хорошее имя для кошки ")
ElseIf $result = "Мурзик" then
MsgBox(0, "", "Имя вашей  кошки Мурзик ")
Else
MsgBox(0, "", "Имя вашей  кошки ни Муся ни Мурзик ")
endif
Всех перечисленных видов ветвления  вполне достаточно для программирования всевозможных условий в языке autoit.Но в нём существуют и другие операторы выбора.

В autoit существуют различные циклические конструкции для повторения инструкций.Первым оператором цикла рассмотрим for.
Часто цикл for используют вот так:
for $i = 0 to 10 step 1
MsgBox(0,"Сообщение","Номер итерации цикла " &$i)
next
Данная программа на autoit осуществляет вывод некоторого текстового сообщения 11 раз.
Следующим циклом для исследования будет while wend.Этот вид цикла позволяет выполняться инструкции бесконечное количество раз или использоваться,как цикл for.
Local $i = 10
While $i = 10
WEnd
Код выше  ничего не выводит и просто оставляет запущенную программу в системном трее и там находится до принудительного завершения пользователем.
Для выхода из цикла в autoit существует оператор ExitLoop.
while 1
Local $result = inputbox("Вопрос","Тебе больше 18 лет?","да")
if $result = "да" then ExitLoop
wend
При положительном ответе на вопрос программа завершит своё выполнение,в противном продолжит,так как цикл является бесконечным до тех пор,пока не получит утвердительный ответ пользователя.

Как в любом другом языке программирования в autoit имеются арифметические операторы - сложение(+),вычитание(-),умножение(*),деление(/).

Local $var1 = 10
Local $var2 = 10
msgbox(0,"Сложение",$var1+$var2)
msgbox(0,"Вычитание",$var1-$var2)
msgbox(0,"Умножение",$var1*$var2)
msgbox(0,"Деление",$var1/$var2)

Арифметические действия в autoit выполняются почти также,как в обычной школьной математике.

Логические операторы необходимы в autoit для составления различных условий,которые вычисляются и в соотвествии с ними выполняются или не выполняются некоторые участки кода.Такими операторами являются логическое И - and,логическое ИЛИ - or и логическое НЕ - not.Этих трёх логических операторов достаточно для формирования любых мыслимых программистом условий в программе на autoit.


Local $var1 = 5
Local $var2 = 10
if $var1 = 5 and $var2 = 10 then msgbox(0,"Сообщение","Переменные соответствуют заданному программистом начальному условию")

Более реалистичный пример - это определение входит ли введенное пользователем число в диапазон,который можно представить в программе,как условие с логическим оператором.

while 1
Local $result = inputbox("Сообщение","Введите целое число")
if $result >0 and $result < 10 then
msgbox(0,"Сообщение","Число входит в диапазон")
else
msgbox(0,"Сообщение","Число  не входит в диапазон")
endif
wend

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

Ниже показана программа,которая выводит на экран окно с кнопкой,которая  закрывает это окно.
#include <GUIConstantsEx.au3>

Local $hGUI = GUICreate("Первое графическое окно на autoit")
Local $idOK = GUICtrlCreateButton("закрыть окно", 310, 370, 85, 25)


GUISetState(@SW_SHOW, $hGUI)

While 1
if  GUIGetMsg() = $idOK then

ExitLoop
endif
WEnd

Функция GUICreate создаёт главное графическое окно.Функция GUISetState с параметром @SW_SHOW  показывает окно, дескриптор которого передаётся во втором параметре.
Функция GUIGetMsg() получает происходящее в окне событие.Сравнение дескриптора кнопки с возвращаемым значением от этой функции позволяет при помощи оператора ветвления if выполнить любой программный код,допустимый в autoit.

Вышеприведённая программа хороша,но имеет один минус - она не закрывается на крестик.Поэтому я привожу программу,которая лишена этого недостатка.

#include <GUIConstantsEx.au3>

Local $hGUI = GUICreate("Первое графическое окно на autoit")
Local $idOK = GUICtrlCreateButton("закрыть окно", 310, 370, 85, 25)


GUISetState(@SW_SHOW, $hGUI)

While 1

$msg = GUIGetMsg()
if $msg = $idOK then
ExitLoop
endif
if  $msg = $GUI_EVENT_CLOSE then
ExitLoop
endif

WEnd

Теперь событие от программы записывается в переменную $msg.

В autoit-программах часто используется инструкция #include.Она позволяет включать в текущий программный файл другой программный файл.Инструкция #include с угловыми скобками обычно ищет файл в директории C:\Program Files\AutoIt3\Include.
А вот инструкция #include с двойными кавычками требует полный путь к файлу.

По умолчанию autoit-программа показывает свою иконку в системном трее.Если нажать на эту иконку выпадает контекстное меню,которое позволяет  завершить исполняемый процесс.При необходимости отключить данную опцию - нужно в начале исходного кода написать инструкцию #NoTrayIcon.

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


#include <GUIConstantsEx.au3>
#include <MsgBoxConstants.au3>


Local $hGUI = GUICreate("")
Local $idExit = GUICtrlCreateButton("закрыть окно", 310, 370, 85, 25)


GUISetState(@SW_SHOW, $hGUI)

While 1

$msg = GUIGetMsg()
if $msg = $idExit then
ExitLoop
endif
if  $msg = $GUI_EVENT_CLOSE then

Local $result = MsgBox($MB_OKCANCEL, "Сообщение", "Вы действительно хотите закрыть приложение")

if $result = 1 then exitloop

endif

WEnd

Функция MsgBox возвращает определенное числовое значение,по которому autoit-программа определяет,какую кнопку нажал пользователь и в соответствии с этим выполнить какую-либо программную операцию.

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


Рецензии