Сейчас 09:09:44 Пятница, 29 марта, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: Bru  
Форум о Warcraft 3 » Раздел для картостроителей » Школа картостроения » [JASS] Урок 3. Функции
[JASS] Урок 3. Функции
DuosoraДата: Вторник, 02 Апреля 2013, 01:01:00 | Сообщение # 1
The cats never sleep...
Группа: Ветераны
Сообщений: 6734
Награды: 10
Репутация: 2161
Блокировки:
В хорошем дизайне добавление вещи стоит дешевле, чем сама эта вещь.
Томас Гейл


На прошлых уроках мы познакомились с множеством вещей, которые (судя по ответам на вопросы) понятны далеко не всем. Но они нужны были для того, чтобы расширить их понимание в дальнейшем. Вот сегодня мы познакомимся с тем, что такое функция.
Функция - составляющая программы, которая имеет имя и которую могут вызывать другие части программы до бесконечности. Может возвращать какое-то значение.
В языке JASS функции делятся на native, BJ и User-Defined.
Функции типа native не могут быть открыты для подробного просмотра. Это те функции, которые в движок уже зашили разработчики.
Функции BJ - содержимое файла Blizzard.j
Функции User-Defined пишутся пользователями.

В языке JASS функции имеют следующий вид:

function имяФункции takes параметры returns типПараметра
телоФункции
endfunction

Давайте несколько разберёмся. Жирными словами выделены ключевые слова, которые объявляют нашу функцию. Подчёркнутые параметры я расскажу отдельно.
имяФункции - имя функции. Обязательно на английском языке. В качестве имени функций нельзя указывать имена уже объявленных функций, глобальные переменные, типы переменных, ключевые слова (return, set, call, type, nothing, null, function, local, globals, endglobals, takes, returns, endfunction, loop, endloop, if, then, else, elseif, endif, exitwhen, constant, native). Если вы нарушите сказанное мною выше, не удивляйтесь, если парсер вам выдаст ошибку.
параметры - то, что вы будете передавать в функции. Когда мы изучим переменные (на уроке 4), вы поймёте, сколько разных типов можно объявить. Перечисляются принимаемые функцией компоненты через запятую, если их нет, то ставится nothing. Если принимаемый параметр только один, тогда запятую ставить вообще не надо. После последнего аргумента запятая ТОЖЕ НЕ СТАВИТСЯ. Все это запомнили? Объявляются они в формате типПеременной имяПараметра. Пример: integer i.
типПараметра - то, что наша функция будет возвращать. Здесь указывается тип БЕЗ ИМЕНИ. Просто integer, real, string, boolean и т.п. Просто тип.
телоФункции - здесь мы пишем то, что функция будет делать (помните задание Hello World? В данном случае call BJDebugMsg("Hello World!") было телом функции).

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

call имяФункции(принимаемыеПараметры)

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

function DoCounting takes integer i returns nothing

Допустим, нужно послать функции число 5. Тогда вызывать её мы будем так:

call DoCounting(5)

Каждая новая функция вызывается с новой строки. Ну вот, познакомились с функциями!
Теперь перейдём к оценке домашнего задания.






Не зли других и сам не злись.
Мы - гости в этом мире.
И если что не так - смирись,
Будь поумнее - улыбнись,
Ведь в мире всё закономерно.
Зло, излучённое тобой,
К тебе вернётся непременно.


Сообщение отредактировал Duosora - Вторник, 02 Апреля 2013, 16:12:22
 

H_A_PKДата: Вторник, 02 Апреля 2013, 01:11:03 | Сообщение # 2
Быдлокодер
Группа: Проверенные
Сообщений: 2605
Награды: 1
Репутация: 822
Блокировки:
FIRST FUCK

Добавлено (02 Апреля 2013, 01:11:03)
---------------------------------------------
э, почему урок так внезапно заканчивается ?
где же ретурны, ещё примеры с аргументами, на кгме в своё время целый большой пример был, эту тему надо подробней раскрыть


проклятье ляжет на любого
кто дочитает до конца
нет не дочитывай не надо
остановись ну всё капец


Сообщение отредактировал H_A_PK - Вторник, 02 Апреля 2013, 01:12:11
 

peinДата: Вторник, 02 Апреля 2013, 01:28:03 | Сообщение # 3
9 уровень
Группа: Проверенные
Сообщений: 1114
Награды: 1
Репутация: 272
Блокировки:
Duosora, а можеш обяснить как самому создавать новые функции. именно ради етого я пришол.
сори что пропасивил 1й урок
 

DuosoraДата: Вторник, 02 Апреля 2013, 01:33:20 | Сообщение # 4
The cats never sleep...
Группа: Ветераны
Сообщений: 6734
Награды: 10
Репутация: 2161
Блокировки:
Цитата (pein)
Duosora, а можеш обяснить как самому создавать новые функции. именно ради етого я пришол.
сори что пропасивил 1й урок

Я дам практику на четвёртом уроке, там это будет объясняться весьма подробно :)


Не зли других и сам не злись.
Мы - гости в этом мире.
И если что не так - смирись,
Будь поумнее - улыбнись,
Ведь в мире всё закономерно.
Зло, излучённое тобой,
К тебе вернётся непременно.
 

H_A_PKДата: Вторник, 02 Апреля 2013, 02:01:29 | Сообщение # 5
Быдлокодер
Группа: Проверенные
Сообщений: 2605
Награды: 1
Репутация: 822
Блокировки:
вещь нужная при написании систем например

проклятье ляжет на любого
кто дочитает до конца
нет не дочитывай не надо
остановись ну всё капец
 

Ty3uKДата: Вторник, 02 Апреля 2013, 09:12:45 | Сообщение # 6
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Рус, я всего лишь ушел спать - нафига ты сразу выложил урок?
Потерпел бы до сегодня, а так урок ни о чем, честно.


╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

KakolookiaДата: Вторник, 02 Апреля 2013, 11:14:54 | Сообщение # 7
6 уровень
Группа: Проверенные
Сообщений: 220
Награды: 0
Репутация: 93
Блокировки:
То оценки не говорят за домашнюю работу, то в прогульщики записывают...
Что за беспредел? >(
 

H_A_PKДата: Вторник, 02 Апреля 2013, 11:34:06 | Сообщение # 8
Быдлокодер
Группа: Проверенные
Сообщений: 2605
Награды: 1
Репутация: 822
Блокировки:
классный же урок

проклятье ляжет на любого
кто дочитает до конца
нет не дочитывай не надо
остановись ну всё капец


Сообщение отредактировал H_A_PK - Вторник, 02 Апреля 2013, 11:57:36
 

FredbobДата: Вторник, 02 Апреля 2013, 14:18:45 | Сообщение # 9
1 уровень
Группа: Пользователи
Сообщений: 14
Награды: 0
Репутация: 0
Блокировки:
Duosora, что подразумевает под собой аргумент функции?
Цитата (Duosora)
После последнего аргумента запятая ТОЖЕ НЕ СТАВИТСЯ
 

Imba_pvLДата: Вторник, 02 Апреля 2013, 14:24:39 | Сообщение # 10
10 уровень
Группа: Проверенные
Сообщений: 3151
Награды: 1
Репутация: 1260
Блокировки:
А д/з где???

 

DaroДата: Вторник, 02 Апреля 2013, 15:15:52 | Сообщение # 11
6 уровень
Группа: Проверенные
Сообщений: 217
Награды: 0
Репутация: 105
Блокировки:
Цитата (Duosora)
Daro

Я прогульщик,омг не сердитесь нуба.
З.Ы. Живу с телефона


 

DuosoraДата: Вторник, 02 Апреля 2013, 16:11:58 | Сообщение # 12
The cats never sleep...
Группа: Ветераны
Сообщений: 6734
Награды: 10
Репутация: 2161
Блокировки:
Цитата (Kakolookia)
То оценки не говорят за домашнюю работу, то в прогульщики записывают...
Что за беспредел? >(

oops, список неверно отфильтровало
Екскьюзес.


Не зли других и сам не злись.
Мы - гости в этом мире.
И если что не так - смирись,
Будь поумнее - улыбнись,
Ведь в мире всё закономерно.
Зло, излучённое тобой,
К тебе вернётся непременно.
 

KakolookiaДата: Вторник, 02 Апреля 2013, 16:26:09 | Сообщение # 13
6 уровень
Группа: Проверенные
Сообщений: 220
Награды: 0
Репутация: 93
Блокировки:
Я больше не прогульщик! :)
Но оценок до сих пор нету :D (хоть я их и знаю)
 

AnTi_GuRuДата: Вторник, 02 Апреля 2013, 16:30:18 | Сообщение # 14
6 уровень
Группа: Проверенные
Сообщений: 238
Награды: 0
Репутация: 135
Блокировки:
Я так понял, функции тут работают так же, как и в Pascal?
 

vladhellgateДата: Вторник, 02 Апреля 2013, 16:55:26 | Сообщение # 15
7 уровень
Группа: Проверенные
Сообщений: 255
Награды: 0
Репутация: 33
Блокировки:
Ээээ почему я прогульщик? Что я пропустил?! Я на сайте каждый день, урок недавно появился, только только его смог посмотреть!

Добавлено (02 Апреля 2013, 16:55:26)
---------------------------------------------
Ааа, теперь всё понял. Выпишите меня из прогульщиков сдал же второй урок. А дз где?

 

H_A_PKДата: Вторник, 02 Апреля 2013, 17:17:49 | Сообщение # 16
Быдлокодер
Группа: Проверенные
Сообщений: 2605
Награды: 1
Репутация: 822
Блокировки:
Цитата (vladhellgate)
А дз где?

напишитите функцию которая из 10ой систем счисления переводит в 2чную


проклятье ляжет на любого
кто дочитает до конца
нет не дочитывай не надо
остановись ну всё капец
 

BlackFoxiДата: Вторник, 02 Апреля 2013, 19:11:41 | Сообщение # 17
2 уровень
Группа: Пользователи
Сообщений: 23
Награды: 0
Репутация: 10
Блокировки:
Цитата (Duosora)
Можно просто написать двойной апостроф ''.

Двойной апостроф и будет.
Цитата (Duosora)
Проводя аналогию потока с текущей водой, как объяснить на языке программиста внезапную заморозку воды?
Перегрузили поток.

Угодайка.
Вода замороженная, отличается от воды жидкой тем, что не сможет течь ни через открытый кран, ни через закрытый.
Если поток перенагружен, то он отнимает большую часть вычислительных ресурсов, вода прет как хрень от Кинга.
А вот если перенагружен какой-то другой поток, то он может потребить так много вычислительных ресурсов(конкретно памяти), что работа того потока, который вода, станет невозможной. И все же вода будет стоячей, а не замороженной.

Случаи, когда вода может не течь: поток ждет своей очереди на выполнение в псевдомногопоточной среде; поток ждет появления достаточных вычислительных ресурсов для своего выполнения; поток ждет данные для обработки; поток был прерван по команде одного из других потоков.
Если в потоке возникла ошибка, то поток на время ее обработки замораживается, потом может быть разморожен, изменен или заве
Цитата (Duosora)
Проводя аналогию потока с текущей водой, что означает открытие и закрытие крана?
Открытие/закрытие исполняющей программы.

Программы не открывают и не закрывают. Открывают/закрывают файлы. Завершение работы потока аналогично исчезновению воды. Запуск программы можно связать с открытием крана, завершение работы с закрытием крана - нет.
Кран символизирует управление водой. Управяет потоком программная/аппаратная среда выполнения. Закрытие крана означает временную остановку выполнения потока средой; открытие - запуск или возобновление выполнения потока средой.
Цитата (Duosora)
Всё из перечисленного.

J - не встречается на популярных тематических ресурсах.
Цитата (Kakolookia)
беспредел

Добавлено (02 Апреля 2013, 19:11:41)
---------------------------------------------

Цитата (BlackFoxi)
потом может быть разморожен, изменен или заве

потом может быть разморожен, изменен или завершен. В Jass поток сразу завершается.
Если внештатная ситуация произошла в среде выполнения, то поток может быть заморожен, как частный случай всего, что угодно.
------------
Мое мнение о функциях: http://warcraft3ft.info/forum/39-44987-1602803-16-1364834395
 

goldplay99Дата: Вторник, 02 Апреля 2013, 23:26:30 | Сообщение # 18
1 уровень
Группа: Пользователи
Сообщений: 13
Награды: 0
Репутация: 0
Блокировки:
типПараметра - то, что наша функция будет возвращать.
Здесь указывается тип БЕЗ ИМЕНИ. Просто integer, real, string,
boolean и т.п. Просто тип.

Добавь, что возрашать можно 1 аргумент, а то бывали случаи.
Насчет с ответом - перезагрузка потока, не согласен))

Добавлено (02 Апреля 2013, 23:26:30)
---------------------------------------------
Если кто-то будет писать функцию как в уроке, будет критовать) Не слово о ретурне))


Я знаю *ВСЕ*, но *ВСЕ* - ничегошеньки незнает обо мне.
 

H_A_PKДата: Вторник, 02 Апреля 2013, 23:28:08 | Сообщение # 19
Быдлокодер
Группа: Проверенные
Сообщений: 2605
Награды: 1
Репутация: 822
Блокировки:
Цитата (goldplay99)
Добавь, что возрашать можно 1 аргумент, а то бывали случаи.

а как же рб


проклятье ляжет на любого
кто дочитает до конца
нет не дочитывай не надо
остановись ну всё капец
 

goldplay99Дата: Среда, 03 Апреля 2013, 06:28:59 | Сообщение # 20
1 уровень
Группа: Пользователи
Сообщений: 13
Награды: 0
Репутация: 0
Блокировки:
он же не работает -_-

Я знаю *ВСЕ*, но *ВСЕ* - ничегошеньки незнает обо мне.
 

Ramazan(off)Дата: Среда, 03 Апреля 2013, 10:17:39 | Сообщение # 21
11 уровень
Группа: Проверенные
Сообщений: 1670
Награды: 1
Репутация: 765
Блокировки:
какие нафиг прогульщики, это лажа полная, даешь локалки
 

SirNikolasДата: Среда, 03 Апреля 2013, 11:41:12 | Сообщение # 22
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Цитата (BlackFoxi)
Случаи, когда вода может не течь: поток ждет своей очереди на выполнение в псевдомногопоточной среде; поток ждет появления достаточных вычислительных ресурсов для своего выполнения; поток ждет данные для обработки; поток был прерван по команде одного из других потоков.
Цитата (BlackFoxi)
Кран символизирует управление водой. Управяет потоком программная/аппаратная среда выполнения. Закрытие крана означает временную остановку выполнения потока средой; открытие - запуск или возобновление выполнения потока средой.
Забавно, я написал примерно то же самое.


 

H_A_PKДата: Среда, 03 Апреля 2013, 11:44:10 | Сообщение # 23
Быдлокодер
Группа: Проверенные
Сообщений: 2605
Награды: 1
Репутация: 822
Блокировки:
Цитата (goldplay99)
он же не работает -_-

на старых патчах очень даже работает


проклятье ляжет на любого
кто дочитает до конца
нет не дочитывай не надо
остановись ну всё капец
 

goldplay99Дата: Среда, 03 Апреля 2013, 12:17:50 | Сообщение # 24
1 уровень
Группа: Пользователи
Сообщений: 13
Награды: 0
Репутация: 0
Блокировки:
Какие на *** старые патчи? Ты еще в варкрафт2 вернись...

Завуалированный мат. Предупреждение.


Я знаю *ВСЕ*, но *ВСЕ* - ничегошеньки незнает обо мне.


Сообщение отредактировал SirNikolas - Среда, 03 Апреля 2013, 13:32:13
 

Ty3uKДата: Среда, 03 Апреля 2013, 12:32:14 | Сообщение # 25
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
goldplay99, шутник.
На рб куча классных карт было, многие периодически играют на старых патчах.
А на 1.24 работает RtC, что позволяет делать классные фишки вроде MMO с сервером.


╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

Форум о Warcraft 3 » Раздел для картостроителей » Школа картостроения » [JASS] Урок 3. Функции
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Copyright © 2006 - 2024 Warcraft3FT.info При копировании материалов c сайта ставьте, пожалуйста, активную обратную ссылку на нас • Design by gReeB04ki ©
Хостинг от uCoz