[Урок 3] Циклы, условия, массивы
|
|
[DUОS] | Дата: Понедельник, 11 Апреля 2011, 08:44:19 | Сообщение # 1 |
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
| Этот урок я посвящу изучению циклов, массивов, функций и условий. Начнём с самого простого. Это условия. Условия - это специальные фрагменты кода, построенные на условных операторах, исходя из истинности которых будет или не будет выполняться код внутри блока операторов. Самый простой пример условия: Code if true == true then // Действия при выполнении условия else // Действия при невыполнении условия endif Сразу замечу, что else-часть кода совершенно необязательно писать. Можно увидеть, что условие выше всегда будет истинно, ведь true = true (истина = истина). Существует также условный оператор elseif, которого на триггерах нет вовсе. Давайте посмотрим пример блока условий с этим оператором. Code if true == true then // Действия при выполнении условия elseif true == false then // Действия при выполнении условия true ==false else // Действия при невыполнении условия endif Вот такой синтаксис условий в Jass. true никогда не будет равно false, значит, это условие невыполнимо. Операторы сравнения условий в Jass: > - больше, чем... < - меньше, чем... >= - больше или равно... <= - меньше или равно... == - полностью равно... != - не равно... and - ... и ... or - ... или ... not - не ... P.S.: При сравнении существует ещё одна фишка, её я вам открою позже, пока вам рано. С условиями разобрались. Теперь рассмотрим циклы. Цикл - повторяющийся до выполнения условия цикла блок действий. Цикл бывает бесконечным (если условие выхода всегда будет ложно) и конечным (если это условие когда-либо будет истинно). Структура любого цикла на Jass: Code loop exitwhen условие // Действия цикла endloop Пример цикла - счётчик от одного до пяти: Code local integer i = 1 loop exitwhen i > 5 // Действия, повторяющиеся 5 раз. set i = i + 1 endloop О переменных в Jass и GUI можно прочесть тут. Я использовал локальную целочисленную. P.S.: Добавлю только то, что в уcловии выхода из цикла нельзя использовать and, or и not. Теперь поговорим о массивах. Индексный массив (в некоторых языках программирования также таблица, ряд) — именованный набор однотипных переменных, расположенных в памяти непосредственно друг за другом, доступ к которым осуществляется по индексу (в отличие от списка). Индекс массива — целое число, либо значение типа, приводимого к целому, указывающее на конкретный элемент массива. В локальном варианте массивы создаются так: local тип array название Учтите, что в отличие от формата local тип название её нельзя задавать сразу, надо писать: Code set название[индекс массива] = значение Пример: Code local integer array i set i[0] = 1 Вот и всё на этом уроке. Вечером - снова зачёт. Кстати, остался только один урок теории. Дальше - оттачивание скилла.
|
|
|
|
Omni174 | Дата: Понедельник, 11 Апреля 2011, 08:47:47 | Сообщение # 2 |
Группа: Заблокированные
Сообщений: 1274
Награды: 1
Репутация: 359
Блокировки:
| А д\з какое?
|
|
|
|
skvaer09 | Дата: Понедельник, 11 Апреля 2011, 08:51:34 | Сообщение # 3 |
8 уровень
Группа: Проверенные
Сообщений: 602
Награды: 0
Репутация: -117
Блокировки:
| зачет
|
|
|
|
Omni174 | Дата: Понедельник, 11 Апреля 2011, 08:52:04 | Сообщение # 4 |
Группа: Заблокированные
Сообщений: 1274
Награды: 1
Репутация: 359
Блокировки:
| Фак,я х3 как буду сдавать ._.
|
|
|
|
Dreii | Дата: Понедельник, 11 Апреля 2011, 11:21:26 | Сообщение # 5 |
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
| [DUОS],Круто,но можно было бы паказать как например с помощью цикла можно обнулить сассив
Сообщение отредактировал Dreii - Понедельник, 11 Апреля 2011, 11:22:31 |
|
|
|
skvaer09 | Дата: Понедельник, 11 Апреля 2011, 12:23:58 | Сообщение # 6 |
8 уровень
Группа: Проверенные
Сообщений: 602
Награды: 0
Репутация: -117
Блокировки:
| Ваще не понятно(
|
|
|
|
Dreii | Дата: Понедельник, 11 Апреля 2011, 12:39:51 | Сообщение # 7 |
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
| skvaer09, Спрашивай что не ясно
|
|
|
|
skvaer09 | Дата: Понедельник, 11 Апреля 2011, 12:50:49 | Сообщение # 8 |
8 уровень
Группа: Проверенные
Сообщений: 602
Награды: 0
Репутация: -117
Блокировки:
| Dreii, ну например "array" что это?
|
|
|
|
Syzaky | Дата: Понедельник, 11 Апреля 2011, 12:51:20 | Сообщение # 9 |
5 уровень
Группа: Проверенные
Сообщений: 104
Награды: 0
Репутация: 12
Блокировки:
| переменная типа массива local integer array i означает создание локальной переменной массива, типом интеджер и именем i
Сообщение отредактировал Syzaky - Понедельник, 11 Апреля 2011, 12:54:47 |
|
|
|
Dreii | Дата: Понедельник, 11 Апреля 2011, 13:13:24 | Сообщение # 10 |
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
| skvaer09, array значит что переменная с массивом
|
|
|
|
skvaer09 | Дата: Понедельник, 11 Апреля 2011, 13:15:53 | Сообщение # 11 |
8 уровень
Группа: Проверенные
Сообщений: 602
Награды: 0
Репутация: -117
Блокировки:
| "false " А это что значит ?
|
|
|
|
Dreii | Дата: Понедельник, 11 Апреля 2011, 13:16:09 | Сообщение # 12 |
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
| skvaer09, false - ложь
|
|
|
|
pirat9629 | Дата: Понедельник, 11 Апреля 2011, 14:49:07 | Сообщение # 13 |
7 уровень
Группа: Проверенные
Сообщений: 422
Награды: 0
Репутация: 102
Блокировки:
| Code if true == true then // Действия при выполнении условия заместь true может стоять чтото другое? например if 1 == true then 1 ето случайное число я правильно понял или вообще не то?)
сделаю минекрафт сервер на заказ. платно
|
|
|
|
Dreii | Дата: Понедельник, 11 Апреля 2011, 14:50:11 | Сообщение # 14 |
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
| pirat9629, например так Code local integer i=GetRanomInt(1,100) if i==20 then //Actions ...
|
|
|
|
pirat9629 | Дата: Понедельник, 11 Апреля 2011, 14:59:27 | Сообщение # 15 |
7 уровень
Группа: Проверенные
Сообщений: 422
Награды: 0
Репутация: 102
Блокировки:
| ага типо сначала локальную переменную установляем случайное число от 1 до 100 а потом if названия више установ переменной <= 50 then убить юнит (а тут чото надо ище?)Добавлено (11-04-2011, 14:59) ---------------------------------------------
ето означает что масив?
сделаю минекрафт сервер на заказ. платно
|
|
|
|
)blazer( | Дата: Понедельник, 11 Апреля 2011, 15:16:57 | Сообщение # 16 |
7 уровень
Группа: Проверенные
Сообщений: 308
Награды: 0
Репутация: 49
Блокировки:
| Снова??? а 1ый был чтоли? или я что-то пропустил
|
|
|
|
Dreii | Дата: Понедельник, 11 Апреля 2011, 15:18:36 | Сообщение # 17 |
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
| Quote (pirat9629) ето означает что масив? да Quote (pirat9629) ага типо сначала локальную переменную установляем случайное число от 1 до 100 а потом if названия више установ переменной <= 50 then можно так Code if GetRandomInt(1,100) <20 then // endif
|
|
|
|
pirat9629 | Дата: Понедельник, 11 Апреля 2011, 16:44:49 | Сообщение # 18 |
7 уровень
Группа: Проверенные
Сообщений: 422
Награды: 0
Репутация: 102
Блокировки:
| ну помоему я все понял) всем спасибо хочу по бистрее закочить школу и знать джасс)
сделаю минекрафт сервер на заказ. платно
|
|
|
|
lawson | Дата: Понедельник, 11 Апреля 2011, 17:50:30 | Сообщение # 19 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| Quote (|DUОS|) Кстати, остался только один урок теории. Дальше - оттачивание скилла. Утечки чтоли? Добавлено (11-04-2011, 17:41) --------------------------------------------- Quote (pirat9629) заместь true может стоять чтото другое? например if 1 == true then 1 ето случайное число я правильно понял или вообще не то?) сравниваються всегда одинаковые зачения. Например 1 > 5 юнит пехотинец != юнит медведь И неправильные сравнения область1 == юнит пехотинец 1 < игрок(1) Добавлено (11-04-2011, 17:50) --------------------------------------------- Quote (|DUОS|) Индекс массива — целое число, либо значение типа, приводимого к целому, указывающее на конкретный элемент массива. Ну ни фига себе эйншейтн наверное в гробу перевернулся. Если я не понял что тут говорит об новичках.
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
Сообщение отредактировал lawson - Понедельник, 11 Апреля 2011, 17:51:15 |
|
|
|
Blood_Elf | Дата: Понедельник, 11 Апреля 2011, 18:20:07 | Сообщение # 20 |
7 уровень
Группа: Проверенные
Сообщений: 415
Награды: 0
Репутация: 92
Блокировки:
| хмм... очень похоже на то, что проходим и проходили по информатике.. условия - такая вещь ещё в excel есть. там, по-моему, на русском. set переменная = значение не говоря о триггере, такая же вещь есть и в простейших алгоритмах, присвоение значения (x:= a) цикл - также есть в алгоритмах. кстати, очень понятно. к зачёту готов!
|
|
|
|
[DUОS] | Дата: Понедельник, 11 Апреля 2011, 18:38:14 | Сообщение # 21 |
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
| Quote (lawson) Утечки чтоли? Preload, встраивание в карту кода C, просмотр исходников спеллов стандартного war3 и пр. Ну это уже если кто захочет. Quote (lawson) сравниваються всегда одинаковые зачения. Исключение есть - типы integer и real можно свободно между собою сравнивать. lawson, Вопрос: можно ли сравнивать так и почему: "duos" >= "handl3"
|
|
|
|
Dreii | Дата: Понедельник, 11 Апреля 2011, 18:46:22 | Сообщение # 22 |
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
| [DUОS], Можно ибо дуос,когда родился повесил хендл)
|
|
|
|
lawson | Дата: Понедельник, 11 Апреля 2011, 20:29:27 | Сообщение # 23 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| Blood_Elf, Сравнение есть в любом языке програмирования. ответ: нет так как duos не может быть больше hanld!
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
Сообщение отредактировал lawson - Вторник, 12 Апреля 2011, 17:48:07 |
|
|
|
Blood_Elf | Дата: Понедельник, 11 Апреля 2011, 20:30:46 | Сообщение # 24 |
7 уровень
Группа: Проверенные
Сообщений: 415
Награды: 0
Репутация: 92
Блокировки:
| я лишь хотел высказать, что JASS, как и любой язык программирования, построен на алгоритмах.
|
|
|
|
lawson | Дата: Понедельник, 11 Апреля 2011, 20:31:53 | Сообщение # 25 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| Quote (Blood_Elf) любой язык программирования, построен на алгоритмах. !
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
|
|
|
|