Содержание

Что такое пул кандидатов в Express Entry? – вопрос и ответ

Наталья, здравствуйте!

Пул (pool) Express Entry – это список всех кандидатов, которые отправили свой профиль в этой системе и соответствуют минимальным требованиям одной из федеральных программ.

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

Срок действия профиля – 1 год.

Что надо сделать, чтобы быть в пуле Express Entry

Чтобы вам было максимально понятно, я пошагово разберу этот процесс.

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

    • Federal Skilled Worker – самая популярная, так как не нужно иметь опыта работы в Канаде или приглашения на работу в этом государстве;
    • Federal Skilled Trades – для тех, у кого есть джоб оффер от канадского работодателя;
    • Canadian Experience Class – для тех, кто работал ранее в Канаде.
  2. Если вы подходите, то нужно создать аккаунт на официальном сайте Канады, а потом профиль Express Entry и отправить его на рассмотрение. Это не сложный, но времязатратный процесс. Очень подробно об этом в статье про создание профиля Express Entry.

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

Что будет дальше

Став одним из кандидатов на иммиграцию, ваш профиль оценивается системой CRS. После оценки получаете определенный балл. Чем он выше, тем больше шансов получить приглашение на иммиграцию (ITA).

В общем тут можно продолжать и продолжать. Надеюсь, на ваш вопрос я дала понятный ответ. Если что, вы всегда можете написать в комментарии, либо повторно воспользоваться формой вопрос-ответа. Удачи!

Полезные материалы:

Помогло

Не помогло

Как выучить иностранный язык / Хабр

Я расскажу о том, как изучать иностранный язык и буду это делать на примере личного опыта изучения английского языка. Английский я начал учить в 36 лет, а уже сейчас у меня свободный английский язык (как письменный, так и устный), подтверждённый официальными сертификатами. Чтобы не быть голословным: у меня есть сертификат IELTS 7.5 баллов (это С1 level) и сертификат переводчика NAATI. Короче, я знаю о чем говорю.

Оглавление:


  1. Отступление про умных людей и прочих полиглотов
  2. Первый шаг
  3. Какой преподаватель нужен (уровень преподавателя)
  4. Где искать преподавателя
  5. Развитие навыков: слушание
  6. Развитие навыков: чтение
  7. Развитие навыков: письмо
  8. Развитие навыков: разговор: произношение
  9. Развитие навыков: разговор: языковой барьер
  10. Словарный запас
  11. Самое главное

Итак, вопрос: “Как выучить английский язык?”.

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


1. Отступление про умных людей и прочих полиглотов

Да, действительно, среди человеческой популяции есть отдельные индивидуумы, которые генетически (ой-ли только генетически?) предрасположены к изучению языков. Во всех языковых школах есть байка, что когда-то давно, в махровом году, у них был студент, который за полгода выучил “весь английский целиком” и стал изъясняться аки носитель языка.

Такое, действительно, иногда встречаются, но:


  1. Эти люди встречаются так редко, что можно сказать, что они единороги, о которых все слышали, но никто не видел.
  2. Если вы тот самый единорог — вот зачем вы читаете эту статью?!

Вывод: так как эта статья вовсе не об эльфах, энтах и прочих единорогах, то про полиглотов мы в этой статье вспоминать не будем.


2. Первый шаг

Первое и основное — определиться с тем зачем вам нужен язык. Вопрос звучит банально, но он ключевой и многие люди отвечают на него не правильно(зачеркнуть) искренне.

Взять, к примеру, цель “хочу смотреть фильмы на английском языке без субтитров”. Это псевдо простая цель может быть достигнута только если у вас свободный английский язык (С1 level и выше). Более того, вы можете быть С1, и не иметь достаточный словарный запас для свободного просмотра. Например, если мне поставить фильм про негритянский квартал Нью-Йорка, я ни бельмеса не пойму, потому что будет много сленга. В итоге возникает вопрос: зачем тратить несколько лет жизни на такую цель, если сейчас все фильмы доступны в нескольких вариантах перевода? Ведь цель, конечно, амбициозна, но это цель во имя цели.

Ещё один пример неадекватной цели — выучить английский “чтобы было”. Дело в том что язык забывается если вы его не используете, и, например, я вынужден заниматься целых 2 раза в неделю исключительно для того чтобы просто поддержать уровень моего языка. Выучить язык впрок — затея не самая умная.

Ниже примерная “сетка” задач и соответствующий уровень знания английского языка



3. Какой преподаватель нужен (уровень преподавателя)

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

На разных этапах изучения Английского языка меня учили разные преподаватели


  • На экзамен NAATI меня готовил профессиональный (и ныне работающий) синхронный переводчик
  • На IELTS 7+ я готовился с нейтив спикером, который профессионально преподаёт английский в языковых школах
  • Когда я начинал учить английский — меня учил просто хороший Российский преподаватель английского.

Каждый из этих преподавателей прекрасно справился со своей задачей, но т.к. задачи были разные — вы ведь понимаете, что все они (эти преподаватели) стоили мне разных денег? Это наглядный пример, как правильно поставленная задача позволяет не только быстрее достичь цели, но и сэкономить на пути её достижения.

Мысль в том, что если у вас задача “Для работы в России” — вам не нужен нейтив спикер. В зависимости от задачи есть следующие градации:


  • Pre-Intermediate — достаточно любых (адекватных) групповых курсов, а персональные занятия вообще излишни
  • Intermediate — групповые занятия ещё имеют смысл, но лучше индивидуальное обучение с любым адекватным преподавателем
  • Upper-intermediate — вам нужен хороший русскоговорящий преподаватель, или любой (адекватный) нейтив спикер. Групповое обучение непродуктивно
  • Advanced — нейтив спикер, который профессионально преподаёт английский, это ваш вариант

Секрет в том, что даже если ваша цель Advanced, вам так или иначе придётся пройти все ступени-уровни Английского. Поэтому, начните с малого и по мере роста вашего языкового уровня меняйте преподавателей. И ещё, если вы готовитесь на конкретный экзамен, проверьте наличие соответствующего сертификата у преподавателя.

Я не буду давать советы по выбору конкретного человека, потому что


  1. Критерии выбора преподавателя “характер, взгляды, возраст, способность вдохновить на обучение, пол, не опаздывает, длина волос” и т.п… Это вовсе не критерии профессионализма преподавателя, поэтому в данной статье мы их не обсуждаем, но они важны, чтобы ваш преподаватель подходил вам психологически
  2. Рейтинги, отзывы, статистика уроков и рекламации — это те формальные критерии, которые позволят вам выбрать нужного человека, а не хвастуна, но это предмет отдельной статьи

4. Где искать преподавателя



5. Развитие навыков: слушание

Слушайте подкасты. Есть специальные подкасты для людей, которые изучают английский (например Luke’s ENGLISH Podcast или ещё куча других), есть просто подкасты на английском языке (здравствуй BBC и вообще всякие рейтинги, где перечислены подкасты). Их много и они разные. Ваша задача окружить себя английской речью, желательно о таком предмете, который вам нравится, и рано или поздно английская речь начнет проникать в ваше сознание и вы начнете её понимать.

Помните о том, что манера речи, акцент (по-русски “говор”) и лексикон будут попадать в ваше сознание неосознанно и автоматически, поэтому нужно быть аккуратным с выбором подкаста. Конкретный пример, представьте что вы изучаете русский язык:


  • Вы слушаете подкаст “В бесконечность и далее”. Авторы обсуждают альтернативные виды транспорта, искусственный интеллект, управление ИТ-проектами и иногда замахиваются обсудить тему “балет”. В ваш лексикон попадают словосочетания типа “суггестивный метод”, “ретроспективный анализ” и “конвергентная эволюция”
  • Вы слушаете аудиоверсию видеоблога Олега Монгола (вот пример выпуска, а ознакомиться с сутью феномена можно тут). Вам на языке рабочих окраин разъясняют бытовые аспекты жизни. В ваш лексикон попадают словосочетания типа «получил люлей», «конкретно определилися» и «роднулькины мои»

Если ваша цель “чтобы вас поняли в гетто” — слушайте англоязычный аналог Олега Монгола, если ваша цель “уметь поддержать разговор на широкий спектр тем” — слушайте англоязычный аналог “В бесконечность и далее”.

Естественно, не подкастами едиными жив человек, есть TED Talks, есть просмотр сериалов на английском языке, есть куча обучающих Youtube видео. Но суть одна — берём и окружаем себя правильной английской речью, которая рано или поздно осядет у вас в голове.


6.Развитие навыков: чтение

Подписка на иностранные СМИ, журналы, блоги и любые иные печатные/блогерские ресурсы — это наше всё. Просто открываете ресурс и начинаете читать, стараясь выбрать темы интересные лично вам.

Самое главное – правильно выбирать сложность текста в соответствии с вашим текущим уровнем английского. Если в одном предложении будет более 3х неизвестных слов, значит этот текст излишне сложен для вас и вам будет его сложно и неинтересно читать, потому читать «через словарь» тяжело. В этом случае надо найти текст попроще.

Очень рекомендую читать адаптированную англоязычную литературу. Суть адаптированной литературы в том, что берут известную книгу и пересказывают содержание этой книги, используя только простые, широко употребимые слова. Т.е. это как если взять «Войну и мир» и изложить её языком 4 летнего, 7 летнего и 9 летнего ребенка. В итоге получатся 3 разных произведения с одним смыслом, но с разным словарным запасом.

Когда вы берёте в руки такую книгу, на её обложке написано либо уровень знания языка, на который рассчитана книга, либо количество слов, которое вам нужно знать чтобы нормально читать эту книгу. Уровень языка — elementary, pre-intermediate и т.п., количество слов — в штуках. Сколько слов вы знаете – можно узнать пройдя по этой ссылке. Посмотреть как выглядят эти книги можно тут.

Однако, с литературой на оригинальном адаптированном английском языке следует быть осторожным, она тяжела и пестрит придуманными словами. Серия книг о Гарри Поттере со всей этой магической магией-шмагией тому яркий пример. Поясню на примере русского языка: представьте что вы учите русский язык и вам попалась книга «Алиса в стране чудес». Там есть стихотворение, которое начинается с «Варкалось. Хливкие шорьки пырялись по наве, и хрюкотали зелюки, как мюмзики в мове. » Вопрос: много ли русских слов человек выучит из этого четверостишия? Ну вы поняли.


7.Развитие навыков: письмо

Это самый сложный аспект изучения любого языка и, вместе с тем, я скажу очень мало. Нужно выполнить последовательность из 4 шагов:


  1. Написать текст (абзац, письмо или эссе)
  2. Отдавать текст на проверку
  3. Ознакомиться с результатом и сделать работу над ошибками
  4. Повторить пункт №1

И так по кругу до бесконечности. С каждой новой итерацией ваше письмо будет чуть чуть лучше, но, к сожалению, настолько чуть-чуть, что вы этого не почувствуете. А вот если сравнить «как сейчас» и «как было прошлым летом», то разница будет очевидна.

Смиритесь, другого пути просто нет. Практика, практика и ещё раз практика. Единственное что, вы можете немного автоматизировать пункт №2 с помощью разных программ, например Grammarly, которые выполняют минимально адекватную функцию проверки лексической корректности набранного текста. С другой стороны, эти программы пока что заменить человека не в состоянии, поэтому не стройте иллюзии что вы сможете обойтись без преподавателя.


8.Развитие навыков: разговор: произношение

Вначале нужно выбрать разновидность акцента, который вы хотите в себе выработать. От единожды наработанного акцента в дальнейшем очень сложно избавиться. Выбирая преподавателя, нужно следить чтобы у него был правильный (нужный вам) акцент, ведь ваш акцент будет формироваться во многом бессознательно и вы будете автоматически копировать и акцент, и манеру речи.

Старайтесь слушать подкасты, передачи, репортажи и т.п. выпускаемые той страной, акцент которой вы хотите получить. Хотите Австралийский акцент – откажитесь от фильмов производства США, хотите Американский акцент – скажите нет шоу Бенни Хилла.

Повторяйте слова за ведущими, актерами и дикторами. Повторили-записали-переслушали свою запись-сделали выводы – повторили, и так много – много раз. Также, старайтесь читать вслух.

Очень хороший тест на произношение, это проверить может ли распознаватель речи Google на вашем телефоне понять что именно вы говорите на английском языке. Если распознавание речи проходит корректно – можно остановиться в шлифовании произношения, если нет — работаем дальше.

А теперь о главном. Не важно к какому акценту вы будете стремиться, Австралийскому или США, важно то, что русский акцент будет все равно слышен. Если вы уже Advance, то есть специальные люди, которые занимаются постановкой произношения и это крайне времязатратный процесс, но вы, наверное, уже и сами всё знаете. Если же вы ещё не Advance – расслабьтесь и примите акцент как данность. Если Google распознает вашу английскую речь без ошибок – все хорошо, а то что у вас русский акцент – ну так вы же из России, гордитесь этим!


9. Развитие навыков: разговор: языковой барьер

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

Это как выступление перед людьми с трибуны, это навык который нужно выработать практикой. С языковым барьером есть два пути:


  • «Бросить в море и пусть плывёт» — поехать в англоговорящую страну на пару недель, а еще лучше, пойти на групповые курсы английского языка в англоговорящей стране.
  • «Обойти» — Тренировать собственную речь перед зеркалом, преподавателем, сокурсниками/друзьями/

«Бросить в море» — работает быстро и эффективно. Если вы вынуждены изъясняться на элементарные бытовые темы – вам так или иначе придётся говорить. Если же вы будете учиться на языковых курсах, то количество таких “бытовых ситуаций” будет зашкаливать и это очень хорошо. Хотя я плохо отношусь к групповым курсам обучения из-за их общей неэффективности, с точки зрения слома языкового барьера – они (эти курсы) идеальны.

«Обойти» — путь повторения, повторения и ещё раз повторения. Работает медленно и не очень эффективно, но зато без потрясений. Говорите, говорите, ещё раз говорите и рано или поздно (скорее поздно, но тем не менее) уверенность в разговоре придёт. Только не надо путать уверенность в себе с уверенностью в речи: из первого появляется второе, но не наоборот.


10. Словарный запас

По моему глубокому убеждению, слова являются неотъемлемой частью языка, однако с точки зрения изучения это слабо пересекающиеся вещи. Т.е. можно хорошо знать английский (знать времена, грамматику и использовать последнюю без ошибок), но если вы не знаете что миномет, мортира, ступа и строительный раствор это одно и то же слово – mortar, то вы этого просто не знаете и точка. Существуют активные и пассивные методы изучения слов.

Пассивный – много читать, слушать подкасты, смотреть фильмы, говорить на иностранном языке. Именно так мы учим слова родного языка пока мы маленькие. Работает это железно и в любом возрасте, но медленно, т.к. мы ведь уже взрослые и когнитивные способности нашего мозга уже не те что были раньше.

Активный метод – использовать, например, карточки в качестве инструмента обучения. Существует масса методологий изучения слов с помощи карточек, но я расскажу только об одной, с которой работал сам.

Интернет ресурс Memrise.com существует с 2010 года и представляет собой платформу хранящую карточки слов со связанными аудиоматериалами. Когда пользователь работает с карточками, сайт вычисляет статистику успешных и неуспешных ответов пользователя и в зависимости от этой статистики составляет индивидуальный план обучения. Особая прелесть этого сайта заключается в том, что он позволяет не только использовать ранее созданные другими пользователями обучающие курсы, но и создавать свои собственные.

Лично я пошел именно по пути создания своего собственного курса: попалось не известное и редкое слово – нашел определение — нашел пример использования — скачал с Google Translate произношения слова — создал карточку. Этот подход более трудоёмкий, однако он даёт более качественные результаты, потому что эффект сходен с эффектом от написания шпаргалок – пока пишешь ты запоминаешь информацию.


11. Самое главное

За 3,5 года, начав учить английский в 36 лет, я смог получить сертификаты IELTS 7. 5 и NAATI CCL, что, хочу заметить, весьма и весьма неплохо. Сейчас, когда я оглядываюсь назад и вспоминаю весь путь обучения, я понимаю, что самым важным было постоянство занятий.

Я занимался английским каждый день хотя бы по 30 минут, при этом суммарно в неделю я проводил не менее 10 часов за изучением английского

Секрет не в уме, методике или преподавателях, а в регулярности занятий… Учите язык регулярно и результат будет гарантированно!

Я в вас верю!

«Татарский язык не принадлежит татарам, как и русский язык не принадлежит лишь русским»

Альфрид Бустанов уверен, что язык сам определяет свои ниши, а не смотрит на отмененную графу в паспорте

Бурная дискуссия вокруг высказывания профессора ВШЭ Гасана Гусейнова о языковой ситуации в стране стала поводом для очередного материала автора «БИЗНЕС Online», ассистент-профессора Амстердамского университета Альфрида Бустанова. Он считает, что татарский язык не хранит в себе каких-то тайн, доступных лишь этническим татарам. Утверждать обратное — значит поддерживать изгнание всех языков, кроме русского, в национально очерченные рамки искусственной сегрегации.

Целая плеяда отечественных востоковедов составляли свои письма татарским ученым и богословам на их же языке, соблюдая все риторические приемы, необходимые элементы визуального плана

МЕНЯ ИНТЕРЕСУЕТ ПРАГМАТИЧНАЯ АРТИКУЛЯЦИЯ ТАТАРСКОГО ЯЗЫКА ТЕМИ, ДЛЯ КОГО ОН ТОЧНО НЕ БЫЛ «РОДНЫМ»

На прошлой неделе социальные сети были взбудоражены суждением профессора Гасана Гусейнова о языковой ситуации в нашей стране. Своим текстом я хотел бы выразить чувство солидарности своему коллеге, чьи работы о русском языке я нахожу очень важными и полезными. Высказывание профессора Гусейнова поднимает целый ряд проблем, среди которых проблема языкового многообразия кажется мне наиболее близкой. О ней, в исторической ретроспективе, и пойдет речь ниже.

Татарский язык не принадлежит татарам — в той же степени, как и русский язык не принадлежит лишь русским. Государственный язык Республики Татарстан не хранит в себе каких-то тайн, доступных лишь этническим татарам. Утверждать обратное — значит поддерживать изгнание всех языков, кроме русского, в национально очерченные рамки искусственной языковой сегрегации. Последнее, к сожалению, мы наблюдаем в последние годы.

Весь XVIII век татарские толмачи обслуживали восточное направление внешней политики Российской империи. Татарский язык служил надежным инструментом на пути к расширению пределов империи в Средней Азии. Конечно, можно рассуждать о степени самостоятельности татарских агентов империи в этой политике (то есть были ли у них свои планы на выстраивание параллельных контактов и горизонтальных связей, помимо официальных), но сам факт их активного участия в имперской политике бесспорен.

Особый интерес представляют контактные зоны, в которых татарский язык служил средством коммуникации. В данном случае речь идет не о бытовании переводной литературы с русского, арабского, персидского и других языков, поскольку тогда мы имеем дело лишь с трансляцией смыслов для татароязычной аудитории. Скорее меня интересует прагматичная артикуляция татарского языка теми, для кого он точно не был родным.

НЕ ОТЛИЧИТЬ ПОЧЕРК «ТАТАРИЗИРОВАННЫХ» ЧУВАШЕЙ ОТ МИШАРЕЙ И КАЗАНСКИХ ТАТАР

Ко второй половине XIX – началу XX века «быть татарином» в России стало престижно. У татар сложилась самостоятельная и развитая система образования, десятки городских медресе из камня, великолепные мечети в европейском стиле, богатейшее книгопечатание и солидный деловой класс с такими же солидными капиталами. Рост престижа послужил основой для массового перехода крещеных из православия «обратно» в ислам. Не у всех из них предки были мусульманами. Многие чуваши и удмурты попадали под влияние татарской мусульманской культуры и «становились татарами», то есть перенимали их язык и религию. Однако, изучать такие контактные зоны или «ассимиляцию в татарство» непросто. Например, в рукописях совершенно не отличить почерк «татаризированных» чувашей от мишарей и казанских татар. Оно и понятно: литературная норма стояла над племенными различиями. Хочешь быть татарином? Переписывай «Кысса-и Йосыф» нужным почерком, ну и уразу держи.

И тем не менее письменные источники изредка дают нам шанс изучать такие гибридные идентичности. Начнем с поэзии. Известно, что в XIX веке любовная лирика Габделджаббара Кандалый (1797–1860) была очень популярна среди простого люда. Писал он, естественно, арабскими буквами в суфийской стилистике, что, наверное, и было секретом его успеха. Так вот, уже давным-давно в библиотеке КГУ археограф Альберт Фатхи обнаружил стихи Кандалыя, приклеенные на переплет персидской рукописи середины XIX века. Правда, написаны они были кириллицей! Текст сложно поддается реконструкции, но очевидно, что это стихи принадлежат Кандалыю. Кто мог записать их в таком виде? Фатхи считал, что это был солдат, знавший русские буквы и почти неграмотный по-татарски. На мой же взгляд, это был нетатарин, попавший под влияние мусульманской литературы, но не знавший арабской графики, а потому записавший понравившиеся стихи на слух.

Есть и другие примеры. В Институте восточных рукописей РАН сохранилось письмо, датированное 18 ноября 1834 года. В нем автор сообщает своему приятелю ахунду Фатхулле ал-Урави две новости. Во-первых, он отправил прошение министру о присуждении медали ахунду за его заслуги (ахунд, похоже, был человеком тщеславным и любил всякие «побрякушки»). Во-вторых, автор письма недавно выдал замуж свою дочь за коллегу, некоего журналиста Куржаева, и надеялся на их счастливый брак. Все бы хорошо, да только это письмо, составленное по всем канонам татарского эпистолярного жанра, подписано так: исәннәрегезне теләп язучы Ыстепан Василий углы Лемин дип беләсезләр. Получается, что имперский чиновник Степан Васильевич вел дружескую переписку с уважаемым духовным лицом не на единственно возможном языке, а на языке письменной культуры российских мусульман.

НАЦИОНАЛИЗАЦИЯ ЯЗЫКА ЕСТЬ ПУТЬ К ГИБЕЛИ

В той же плоскости частной переписки лежит и целый комплекс писем, составленных на рубеже XIX–XX веков российскими востоковедами. Внимание, сейчас будет пафос! Целая плеяда отечественных востоковедов, чьи имена золотыми буквами вписаны в мировую науку, составляли свои письма татарским ученым и богословам на их же языке, соблюдая все риторические приемы, необходимые элементы визуального плана (вроде отступов и тугры наверху письма) и внутренней структуры. Н.Ф. Катанов, Евфимий Малов, А.Н. Самойлович, В.В. Радлов и другие — все они писали прекрасные письма на тюрки с полным знанием дела. И делали они это далеко не обязательно из чистой любви к татарам, напротив — некоторые из вышеперечисленных лиц открыто ненавидели мусульман. Такова была прагматика, если угодно, порядок вещей: писать по-русски исламским богословам — моветон.

Многие образованные мусульмане в какой-то мере знали русский язык. Например, медицинский трактат на османском языке, переписанный в деревне Тюнтяр в 1772 году, венчает дополнительная подпись переписчика по-русски: Усман Смаилев. Некоторые интеллектуалы вроде Фатиха Карими вполне могли писать по-русски, но чаще делали вид, что языка не знают, и пользовались услугами устного переводчика, чтобы иметь больше времени на раздумья при важных разговорах. Очевидно, что отношение к языку не было однозначным, скорее ситуативным и очень прагматичным.

Чему нас учат эти пограничные ситуации? Национализация языка есть путь к гибели. Язык сам определяет свои ниши, а не смотрит на отмененную графу в паспорте. Татарский язык — это не язык татар, а инструмент коммуникации между говорящими, для которых по какой-то причине именно этот язык сейчас удобен. Конечно, залогом для такой работы языка является наличие устойчивого языкового репертуара, возможности обратиться не к единственно возможной опции, а выбирать из спектра доступных языков и их комбинаций. Языковое многообразие — это историческая норма в нашей стране. Хотелось бы, чтобы это богатство оставалось с нами и дальше.

Мнение автора может не совпадать с позицией редакции

Провокатор / Nika Smirnova

Один автор писал-писал книгу, и вдруг на самой середине потерял интерес. Вот наплевать ему стало и на героев, и на сюжет, и кто кого чем под конец прихлопнет. Всё бы хорошо, да только писал он не в стол, и не в шкаф, и даже не в холодильник, а в интернет. Главу напишет, ошибки подотрёт — и на сайт. Чтобы сразу прочитали, ещё горяченькую. Сейчас вроде все так делают, не? Вот и наш автор решил не выпендриваться.

И просчитался. Думал, что вдохновения хватит на всю книгу, и начал выкладывать. И почти угадал: вдохновение лилось рекой, а вот интерес пропал! Другие книги пишутся, а эта — нет. Как ножом отрезало. Не пишется, и всё тут!

А автору стыдно — читатели-то ждут. Он сначала пытался заставлять себя писать: скотчем к стулу примотался, название своей книги маркером на стене написал, портрет главной героини на кофейной кружке распечатал — ничего не помогло. Нет интереса к героям, хоть убейся.

Автор попытался всех поубивать, но и это не вышло — лень. Чтобы кого-то убить, надо на него как минимум разозлиться, а автору на своих героев было наплевать. И тогда он махнул рукой и объявил читателям:

— Всё. Не могу больше. Книга заморожена, а я пошёл писать другую. Звиняйте, проды не будет.

Читатели сначала не поверили.

— Да брось, — говорят, — это у тебя просто неписец случился. Скоро пройдёт, он как насморк.

Но прода не выходила. Читатели забеспокоились:

— Алё, чувак, где прода-то? Год прошёл, пора бы и честь знать.

— Не будет проды, — невнятно отозвался автор из-под груды новых черновиков. — Я интерес потерял.

— Ты что, офонарел? На самом интересном месте!

— Это оно для вас интересное. А у меня никакого интересу нет. Остыл я к этой истории. Прошла любовь, завяли помидоры.

— Нууу… — разочарованно протянули читатели и начали расходиться.

Но один из них очень хотел проду. Так сильно хотел, что готов был написать её сам. Чтобы не терять времени, он так и спросил у автора:

— Слышь, бро, тебе точно на свою недописанную книгу наплевать?

— Точно, — подтвердил автор.

— Точно-точно?

— С высокого дерева.

— Тогда ты не против, если я за тебя допишу?

— Да валяй.

— Спасибки! — подпрыгнул от радости читатель и побежал дописывать.

Грамотность у него хромала, зато фантазии было хоть отбавляй. Одна беда — вся эта фантазия пёрла только в одну сторону, а именно в мочилово. В первом же абзаце все герои набили друг другу морды, во втором взялись за пистолеты, а в третьем дело дошло до атомной бомбы. Когда продолжатель выложил первую главу — так-то она была 29-й, но товарищ благоразумно оформил работу как фанфик, — сразу же прибежал автор незавершёнки. Откровенно говоря, он ждал этого момента. Может, он и потерял интерес к своей писанине, но его снедало любопытство: а что там про его героев понаписали? Вдруг у продолжателя получилось лучше, и пора уходить на покой?

— Ну-с, посмотрим, — пробормотал писатель, поставил лайк чисто из уважения и открыл шедевр.

В первую же минуту с его лицом произошло пять изменений: сначала оно застыло, потом выпучились глаза, в следующий миг отвисла челюсть, затем оно побагровело и наконец перекосилось в гневной гримасе. Автор, не дочитав, снял поставленный лайк, побегал по комнате, выругался и написал отзыв:

— Это что за чертовщина?! Почему ты всё с ног на голову повернул? Ты зачем мою идею наизнанку вывернул и низвёл всё до тупого мордобоя?

— Ничего не тупого, отличный мордобой, — обиделся автор продолжения. — И вообще, ты мне сам разрешил.

— Я разрешил проду написать, а не эту галиматью! — возопил автор незавершёнки. — Там всё не так было!

— А как? — хихикая в кулак, спросил продолжатель.

— Щас напишу! — и автор кинулся писать свою книгу дальше, кипя от возмущения.

И дописал!

Писатели и призрак «пионера» — 28 Января 2019 — Блоги

В связи с возрастающей популярностью визуальных новелл как жанра визуализированного литературного искусства, сценаристы и писатели плодятся как мыши в моем подвале. Не успела утихнуть шумиха вокруг всеми известной истории про пионеров, так сотни мальчиков пубертатного периода объявили себя сценаристами.
Каждый из них мечтает оказаться в объятиях своей вожделенной «пионерки» с соседней парты. Вечерами начинающие писатели эротического жанра ублажают свое эго просмотром странных картинок тематического фан-клуба, а после яростно выстукивают на клавиатуре очередные, «не имеющие аналогов сюжеты». Я, как человек, который много читает и сочиняет, полностью поддерживаю рвение подрастающего поколения. Литература способствует развитию образного мышления, помогает понять и принять многие аспекты в окружающем мире. Узнавать новые истории всегда интересно. Но еще интереснее самому творить миры, где помыслы автора безграничны.

… Тихим и поздним вечером юное и очень амбициозное дарование торопливо записывает свою историю. Высунув язык, оно так сильно стучит по клавиатуре, что не слышит, как уставший после долгой смены на заводе батя в соседней комнате кроет свое чадо матом. Но полет мысли уже не остановить, надо закончить до полуночи, ведь завтра в школу. А там над ним снова будут глумиться, дразнить за угри на лице и жирную кожу. «Ничего, ничего», — думает Нагибатор100500, такой никнейм он взял себе в дотке, — «вот как увидят, какой я гениальный, то все телки мои… Гы-гы».
На секунду оторвавшись от клавиатуры, «маленький большой человек» представил себе обнаженную девичью грудь и сглотнул слюну. Возникшую на мгновение тишину вновь нарушило яростное щелканье клавиш…

Звучит печально, но реальность еще печальнее. Они не останавливаются. Они продолжают писать. Они пишут не один вечер, в том же темпе. В один прекрасный день на тематических ресурсах появляются полотна оскароносных «сценариев» имени Василия Петрова из десятого бэ. Но самое печальное – они хотят оплаты за свои бытовые эротические фантазии.
В любом издательстве есть человек, который занимается отбором рукописей для дальнейшей отправки на вычитку редакторам. Ежедневно отвергаются десятки произведений широко известных писателей. Но благодаря интернету…
Благодаря интернету любой получает шанс показать себя миру. Всеми правдами и неправдами прыщавый мальчик продвигает свое творение, апогей великой мысли, в массы. Благодаря таким же мечтателям «о прекрасном» появляются новые новеллы про «обыкновенного джапанского школотронщика», который мощным взмахом гениталий сокрушает миры и устраивает оргии с кошкодевочками. Еще лучше, если главный герой произведения будет самим «аццким сатаной криминальных дел», раздающим ангелам по самые крылья. Весьма возможно, при помощи тех же гениталий. И не стоит забывать об обилии шуток-прибауток в формате «пасхалок», на разных языках, в абсолютно случайном контексте, к месту и без. Также имеется великое множество бытовых тем, штампованных клише, про братиков, сестричек и лоли, а то и все сразу. В сеттинге будущего или в пионерии. А еще лучше, если везде будет магия. И мехи. Все это и намного больше сдобрено бесконечными, зачастую бессмысленными диалогами, суть которых сводится к … Я думаю, вы поняли, куда.
Стоит ли рассказать, как пишут ровесницы таких авторов, те самые девочки-анимешницы? Не рискну, там еще хуже.
После столь долгого лирического вступления я бы хотел объяснить, к чему все это было.
Человек, решивший написать произведение, зачастую начинает с идеи, она может быть даже не оригинальной. К примеру, с идеи сочинить фанфик – ведь это проще простого. Мир уже есть, осталось подставить своих персонажей и придумать диалоги. Это трудно? Да. Это труднее, чем сочинить с нуля. Опытные писатели с многолетним стажем не рискуют подвергать сомнению свою репутацию, а наши школьники и студенты мечут рассказы «по мотивам», как рыбы икру на весеннем нересте.
Не все так безнадежно. Среди литературных масс данной категории попадаются годные сюжеты, с продуманным миром, с грамотными диалогами, с прекрасным чувством юмора. Их катастрофически мало, потому как возраст авторов вдвое больше нашего Васи Петрова.

Я приведу список основных критериев, необходимых каждому писателю.
Первый, он же самый важный – это уровень эрудиции. Нельзя просто так взять и написать произведение, будучи фанатом «Дом-2» или любителем русского рэпчика. Нужно много читать, особенно литературу разных жанров, а так же газеты, журналы на различную тематику, слушать подкасты, радио, даже «ненавистный зомбоящик» неплохо помогает в развитии.
Второй, не менее важный – взаимодействие с обществом. Основные лингвистические конструкции для составления диалогов персонажей нарабатываются при частом общении с большим количеством людей с разным образованием, а также разных возрастов и статусов.
Третий – знание языка. Настолько хорошо, насколько это возможно для вашего текущего уровня развития. То есть ваша способность строить конструктивные и красивые предложения. С этим вы научитесь красиво описывать окружающий мир. Про грамматику сильно волноваться не стоит – существуют корректоры, которые вычитают и исправят ваш текст, предложат более правильные конструкции речи. Несмотря на это, необходимо стремиться уменьшать количество спорных моментов в тексте.

К сожалению, об этом никто не задумывается. Школьнику не объяснишь – он обидится. Взрослому не объяснишь по той же причине. «Я автор, я так чувствую, я умнее всех».
В следующий раз поговорим об основных смысловых ошибках, о речевых паразитах и о конструкции повествования. О том, как нужно писать, зачем и главное — почему.

JASS: Курс молодого бойца — Статьи — WarCraft 3 / Моддинг

Приветствую на страницах первой из серии статей, посвящённых JASS — языку программирования, созданному студией Blizzard Entertainment для своих игр. Здесь речь пойдёт о JASS, используемом в WarCraft III: The Frozen Throne. Собранные в этой статье знания пригодятся как новичку, который делает свои первые шаги в увлекательный мир программирования, так и более искушённому в нём профессионалу.

Чтобы понять, насколько статья будет полезна и актуальна лично для Вас, ознакомьтесь со списком ниже. Он наглядно иллюстрирует основную идею статьи, что помогает составить общее представление о ней.

Статья научит Вас:
  • Понимать и использовать применяемую в программировании терминологию. Объяснение построено таким образом, что перед использованием каждого термина в статье дано его определение.
  • Программированию с использованием языка JASS. Внимание к деталям упрощает объяснение, делая его более доступным для понимания.
  • Разбору готового кода JASS. Вы сможете работать с кодом, который писал другой программист, анализировать и улучшать этот код, понимая, как он работает.
Статья не научит Вас:
  • Готовым решениям. Наработки и конкретные случаи применения JASS всегда можно найти как в других статьях, так и в специальном разделе для наработок.
  • Взлому (депротекту, открытию) карт. На самом деле, придумывать какую-либо новую концепцию или делать что-нибудь своё гораздо интереснее, чем копировать существующее, не говоря уже о моральной стороне взлома. Если карта закрыта, а самостоятельно Вы не можете разобраться, как сделать то, что в ней реализовано, рекомендую обратиться в раздел вопросов проекта WarCraft III на XGM — там Вам обязательно помогут разобраться, что к чему, а база, которую Вам даст эта статья, существенно облегчит понимание ответов.
Два важных совета:
  • Если во время прочтения статьи возникают какие-либо вопросы по JASS, задавайте их в разделе «Вопросы» проекта WarCraft III на XGM.
  • Если во время прочтения статьи возникают вопросы по её содержанию и смысловой нагрузке, обращайтесь в местные комментарии.

Эти простые правила позволят Вам получать ответы на Ваши вопросы гораздо быстрее. Спасибо за то, что следуете ему.


Благодарю от всей души:
Благодарности расположены в порядке хронологии моего ознакомления.
  • Blizzard Entertainment. Студия, подарившая нам WarCraft III: The Frozen Throne и редактор World Editor.
  • Vexorian. Человек, внёсший неоценимый вклад в развитие и распространение JASS. Именно он объяснял, как и что в нём работает, когда документации не было практически никакой. Он широко известен как автор популярного диалекта vJASS и различных мелких программ для работы с WarCraft III, таких как WC3 Map Optimizer.
  • ADOLF. Создатель AdicHelper, парсер для диалекта cJASS, также автор многих полезных ремарок, пригодившихся мне при разборе механики работы JASS.
  • Nestharus. Автор интересных экспериментов и работ по программированию на JASS, разбор которых открыл этот язык для меня с иной, более неизведанной и интересной стороны.
  • Duosora. Автор и переводчик различных статей по World Editor и JASS; человек, собравший много материала для этого статейного цикла и передавший его мне для дополнения и публикации.
  • ScorpioT1000. Очень полезный материал о типизации и обработке данных, который лёг в основу описания типов JASS в этой статье.
В этом статейном цикле Вы узнаете о том, что такое JASS и как с ним работать. Название JASS — это аббревиатура, расшифровывающаяся как Just Another Scripting Syntax, что в переводе означает «ещё один синтаксис скриптования». Вопреки популярному мнению, он используется не только в WarCraft III, но также и в играх серии StarCraft, так что это не один язык программирования, а целая их серия.

JASS — это событийно-ориентированный интерпретируемый сценарный язык программирования. Если Вы не особо разбираетесь в терминах программирования, откройте спойлер, данный ниже, чтобы узнать подробнее о том, что такое событийная ориентация и скриптование. Это поможет Вам вкратце понять принцип работы языка.

» Краткий ликбез о типах и переводах языков программирования

Изучив множество тематических сайтов, где описывались типы языков программирования в поисках такого объяснения, на которое можно было бы смело ссылаться и быть уверенным, что его с лёгкостью поймёт любой новичок, для которого большая часть терминов программирования — это большое открытие, в конечном итоге сделал вывод, что писать такое объяснение надо самому.

Существует такое понятие, как парадигма программирования — это определённый подход к написанию программ. Для тех, кто хочет ознакомиться с парадигмами подробнее, есть специальная статья. Для упрощения понимания можно отбросить большинство из них и сказать, что языки программирования делятся на две огромные группы:
  • Событийно-ориентированное программирование (СОП) — это такая парадигма программирования, где принцип работы программы строится вокруг работы с событиями и реакциями на них (то есть, произошло какое-либо событие (например, программа запустилась) — программа среагировала на него (этот процесс называют также «отловом» события) — выполнился код, связанный с событием). По факту — это обособившееся ответвление ООП.
    Примечательно, что аббревиатура СОП также используется и для субъектно-ориентированного программирования, но в общем случае под ней понимают именно событийно-ориентированное программирование.
  • Объектно-ориентированное программирование (ООП) — это такая парадигма программирования, где принцип работы программы строится вокруг работы с объектами (создаются объекты (программа «конструируется») — ожидается взаимодействие пользователя с объектом (щелчок на кнопку, обращение к объекту и т.п.) — выполняется необходимый код, связанный с этим объектом).

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

Люди в мире разговаривают на разных языках. У машины тоже есть свой язык и называется он машинным (бинарным) языком. Допустим, встречаются два человека — один разговаривает на английском языке, а другой — на вьетнамском. Для того, чтобы они поняли друг друга, им необходим переводчик, который знает оба языка и может помочь им в беседе. Такой переводчик необходим и машине для перевода инструкций языка программирования любого уровня в машинный код.

Напрямую в машинный код можно переводить только низкоуровневый язык программирования. Остальные необходимо переводить постепенно, понижая уровень вплоть до машинного кода, поэтому зачастую переводчиков требуется несколько. Например, чтобы перевести код со сверхвысокогоуровневого языка программирования в машинный код, сначала нужно перевести его в высокоуровневый, затем высокоуровневый перевести в среднеуровневый, затем среднеуровневый перевести в низкоуровневый, который переводится в машинный код.

Такие переводчики называются трансляторами. Процесс трансляции называется транслированием кода.

Вы могли встречать традиционное деление переводчиков на устных (interpreters — осуществляющих устный перевод) и письменных (translators — осуществляющих письменный перевод). У трансляторов тоже есть подобное деление, но немного по иному признаку.

Два основных типа трансляторов, о которых знают многие программисты — это компиляторы и интерпретаторы.

Интерпретаторы — такие трансляторы, принцип работы которых основывается на построчном переводе исходного кода в целевой язык и последующем, тоже построчном, его выполнении. Работают подобно устным переводчикам — они прослушивают предложение и воспроизводят его на другом языке.
Процесс такого транслирования называют интерпретацией кода.

Компиляторы — такие трансляторы, принцип работы которых основывается на переводе исходного кода в машинный язык и последующей его проверке на ошибки, таким образом «собирая» его в исполняемый файл (исполняемые файлы в системе Windows, например, часто называют «экзешниками» или «exe-файлами»). Такой файл целевая среда может выполнить самостоятельно при его запуске. Работают подобно письменным переводчикам, которые сначала выполняют черновой перевод на целевой язык, а затем читают его и корректируют, выявляя и исправляя ошибки. Вот только в случае с кодом компиляция не исправляет ошибки сама, а только выводит результаты проверки программисту, чтобы он внёс необходимые изменения.
Процесс такого транслирования называют компиляцией кода.


Теперь Вы лучше разбираетесь в основных терминах программирования и понимаете, что такое JASS. Если не совсем, откройте спойлер ниже — он прольёт Вам свет на ситуацию.

» Нажмите для просмотра объяснения определения JASS

JASS — это высокоуровневый язык программирования (не среднеуровневый из-за того, что это сценарный язык — все сценарные языки по классификации высокоуровневые из-за большей ориентированности на человека).

Исходный код WarCraft III написан на языке программирования С. Технически на С можно реализовывать конструкции с низким уровнем абстракции, приближенные к машинному коду, но С — компилируемый язык, то есть он также нуждается в переводе на уровень ниже (Assembler), что уже не даёт называть его языком низкого уровня. Среднеуровневым языком программирования его тоже не назовёшь, потому что Си никаким образом не работает с компьютерным железом непосредственно. Итого Си — это классический высокоуровневый язык программирования, а JASS — список «руководств к действию» для функций, описанных в Си, но так как метод передачи данных не изменяется, JASS ровно такой же высокоуровневый язык (это помимо общего правила о том, что скриптовые или сценарные языки — все высокоуровневые). Нелишне будет сказать о том, что Си — процедурный язык программирования и JASS наследует аспект этой «процедурности», выполняя действия шаг за шагом, но строит свою структуру выполнения не вокруг процедур, а вокруг определённых событий. Поэтому JASS — событийно-ориентированный, а не процедурный язык программирования.

Несмотря на то, что многие картостроители употребляют термины «компиляция карты» и «скомпилировать JASS», язык на самом деле интерпретируемый, поскольку, во-первых, он сценарный и интерпретируемая природа JASS следует из его определения, а во-вторых — встроенное в World Editor средство работы с JASS при сохранении карты занимается только проверкой синтаксиса кода (обратите внимание, что в самой карте после сохранения исходный код в файле war3map. j остаётся неизменным), а его выполнением при запуске карты занимается встроенный в игру интерпретатор, поэтому иногда можно получить фатальную ошибку уже при запуске карты.

Надеюсь, что приведённое здесь пояснение облегчило Вам понимание определения.

О JASS можно говорить сутками напролёт, не теряя интереса. Несмотря на свою простоту, он очень интересен в своём изучении и использовании. Несмотря на то, что этот язык существует столько же, сколько и WarCraft III (с 2002 года; возможность использования JASS в World Editor напрямую была открыта только в 2003 году с выходом дополнения The Frozen Throne), он до конца не изучен. Кто знает, возможно, Вы, дорогой читатель, откроете что-нибудь новое в этом языке или сделаете интересную карту, в которую ещё долго будут играть, несмотря на формальный износ ядра WarCraft III.

Изучение JASS — времязатратный, но увлекательный процесс. Если после прочтения всего вышеизложенного Вы остаётесь тверды в решении изучить JASS, то этот язык Вам по силам. Если Вы сомневаетесь, изучите азы программирования и только затем приступайте к JASS.

» Это интересно
  • Увы, кроме одной маленькой строчки в самом начале статьи о JASS в Википедии, в ней ничего не сказано про тот JASS, который используется в StarCraft и StarCraft 2, а ведь он не менее интересен, хотя и имеет немного другой синтаксис, нежели тот, что используется в WarCraft III.
  • Технически, программировать на JASS можно было ещё в 2002 году, вместе с выпуском WarCraft III: Reign of Chaos. Для этого карту необходимо было вскрывать при помощи редактора MPQ-архивов и непосредственно менять код в файле war3map.j, используя Блокнот (Notepad). Говоря справедливости ради, об этом в то время знали единицы, да и списка функций JASS нигде не было, не говоря уже об объяснении их принципа действия.
  • В названии статьи о JASS в Википедии, аббревиатура написана как Jass, хотя это неправильное написание. Примечательно, что в других частях этой же статьи JASS пишется в правильном регистре.

Как и во всём прочем, в JASS есть свои преимущества и свои недостатки.

+ Высокоуровневый язык программирования: высокий уровень восприятия кода человеком. Как и почти в любом другом языке программирования подобного уровня, в JASS действительно можно сделать хорошо структуризированный код, при этом понятный человеку.
+ Широкоплановый функционал: при помощи JASS можно выполнить огромный спектр поставленных задач вплоть до превращения карты в совершенно другую игру на базе движка WarCraft III. В качестве примера хочу привести TCX, переделавший привычный WarCraft III в нечто совсем иное.
+ «Низкоуровневость» по отношению к WarCraft III: владение JASS позволит Вам практически напрямую общаться с движком игры в отличии от надстройки GUI и получить максимально возможный в World Editor доступ к нему.

— Высокоуровневый язык программирования: здесь нет ошибки, это как плюс, так и существенный минус, ведь обработка команд языка движком игры — тайна за семью печатями.
— Нет встроенной поддержки пользовательской типизации: да, JASS — это такая штуковина, где система типов строго упорядочена и возможности создавать собственные типы нет. Эту проблему частично решают диалекты vJASS и cJASS, но встроенной поддержки как таковой нет.
— Низкий уровень интеграции с модулями World Editor: изучение JASS всё-таки не панацея при создании карт. JASS не даст Вам возможность получать и изменять значения большинства игровых констант или игрового интерфейса. То же самое можно сказать про другие модули, а в особенности про Редактор объектов. Именно из-за этого существенного недостатка JASS картостроителям приходится писать целые надстройки для изменения параметров объектов, таких как, к примеру максимальное здоровье и максимальная мана боевых единиц — получить их можно, изменить только средствами JASS — нельзя. Вот такие пироги.
— Низкий уровень поддержки функций работы с интерфейсом: здесь стоит уточнить — уровень не то, что низкий, считайте, что он вообще отсутствует: при помощи JASS Вы не сможете получить координаты мыши игрока ни на мониторе (где они измеряются от 0 до 1), ни на карте (точка на трёхмерном пространстве). Вам также не дадут узнать, наведена ли мышь на какой-либо объект (trackable — особый случай, но даже этот тип не позволяет изменять существующий игровой интерфейс, только добавлять что-то вроде полноэкранного выбора персонажа или инвентаря). Из-за отсутствия этих фундаментальных функций JASS не даст Вам нормально работать с интерфейсом, который поставляется с игрой.

Как я уже говорил, в JASS очень строгая система типов.
Если Вы горите желанием узнать больше о том, как работают типы данных в JASS, рекомендую к ознакомлению статью о типах данных в JASS от ScorpioT1000. Там очень подробно описана механика их работы.
Так как статья выше писалась с учётом того, что читатель хорошо знаком с программированием, привожу ниже таблицы типов данных, которые проще для восприятия людей, которые начинают своё знакомство с программированием.
НазваниеРодительский типДопустимые значенияЗначение по умолчаниюКомментарий
integer __int32 в C [ -2147483648 ; 2147483647 ] 0 Целочисленная. 38 ] 0.0 Реальная. Хранит в себе любые целые числа в своей области допустимых значений. Аналогична типу float языка программирования С.
string Ссылка на массив символов char до 1023 байтов (до 1013 для совместимости с сохранением и загрузкой игры) null Строка, принимающая символы UTF-8. В памяти содержится как хеш-таблица строк, которые не удаляются из памяти до окончания игры.
boolean __int32 в C [ -2147483648 ; 2147483647 ], константы true и false false Логическая (булевая). Несмотря на то, что технически обрабатываются только значения 1 и 0 (истина и ложь), можно использовать весь доступный диапазон чисел. Аналогична типу bool языка программирования С++.
handle __int32 в C [ -2147483648 ; 2147483647 ] null Указатель, но не на ячейку памяти напрямую, а на адрес в хеш-таблице ссылок. По своей сути это обычное число, представленное в виде, похожем на pointer языка программирования С++, но со своими отличиями — об этом позже.
code handle Существующие функции 0 Указатель на функцию. Единственный тип в JASS, который не поддерживает массивы и формально не может быть задан локальной переменной, только напрямую в параметрах функции. Работает аналогично с указателем на функцию в языках С и С++.
» Доступное новичку объяснение того, что такое ссылки, указатели и объекты

В самом понятном определении, объекты — это таблицы с данными специфического содержания.

Адресацию объектов можно объяснить так: есть стол, который стоит в определённой квартире. Квартира — это объект в доме. Дом — это объект на улице. Улица — это объект в городе. Город — это объект в стране. Страна — это объект на материке. Материк — это объект на планете. Планета — это объект в системе. Система — это объект в галактике. Галактика — это объект во Вселенной.

Таким образом, чтобы обратиться к объекту «стол», сначала надо узнать галактику его нахождения, в галактике — систему, в системе — планету, на планете — материк, на материке — страну, в стране — город, в городе — улицу, на улице — дом, в доме — квартиру.

Чтобы избежать такой долгой адресации, каждому экземпляру объекта присваивается уникальный идентификатор во Вселенной (или же в программе). Этот идентификатор — номер ячейки памяти, в которой содержится определённый экземпляр объекта.

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

Отличайте указатели от ссылок!

Указатель — это тип переменной, которая может принимать значение любого адреса в памяти, либо нулевое. Благодаря указателям можно получать объекты прямо из памяти и читать их с жёсткого диска без загрузки в оперативную память. В связи с этим указатели существенно экономят расход памяти. Ссылка — это объект, который при обращении к себе «перенаправляет» на другой объект, на который он ссылается. Обращение к объекту по ссылке называют разыменовыванием ссылки. Ссылка — своеобразный посредник между пользователем и объектом, к которому он хочет обратиться и реализуется разными способами в каждом языке программирования. В JASS кроме шести основных типов существует 89 типов, производных от handle.
Запомните, что тип handle и все производные от него типы содержат не сам объект, а ссылку на адрес этого объекта в памяти, но при этом одни из производных от handle типы содержат таблицы данных (т.е. провоцируют утечки памяти), а другие просто содержат численные значения (т. е. не провоцируют утечек памяти). Этим обосновано наличие или отсутствие функций для очистки памяти от объектов и ссылок на них (есть и исключения, например, объекты trackable нельзя уничтожать).
Условно договоримся, что ссылки на объекты провоцируют утечки памяти, если в таблице нет специального пояснения. Так Вам будет проще разобраться в таблице, спрятанной под спойлером ниже. » Осторожно, внутри живёт большая таблица!
НазваниеРодительский типКомментарийАналог в триггерах (GUI)
agenthandleСсылка на объект, ссылку на который можно записать в хэш-таблицу. При этом ссылку на хэш-таблицу можно также записать как в другую, так и в ту же самую хэш-таблицу, так как она также является частью типа agent.
eventagentСсылка на объект события триггера. Провоцирует утечку памяти, однако, прямой функции для его чистки из памяти в JASS нет. Можно предположить, что если при регистрации экземпляра объекта типа event он привязывается к определённому триггеру (один экземпляр event не может использоваться для нескольких триггеров), то при уничтожении триггера должна уничтожаться и вся таблица зарегистрированных на него событий, условий и действий. То есть, объектов типов event, triggercondition и triggeraction.
playeragentСсылка на идентификатор игрока. Речь, конечно, идёт не о человеке, играющем в Вашу карту, а об экземпляре игры, запущенном на его компьютере. Игрок (Player)
widgetagentСсылка на интерактивный объект, обладающий ресурсом «здоровье» (Health). Это объекты, с которыми игрок (человек) может взаимодействовать при помощи игрового интерфейса.
unitwidgetСсылка на объект боевой единицы. В Редакторе объектов боевые единицы создаются и изменяются на вкладке «Войска» (Units).Боевая единица (Unit)
destructablewidgetСсылка на разрушаемый объект. В Редакторе объектов разрушаемые объекты создаются и изменяются на вкладке «Разрушаемые объекты» (Destructables). Не путать с декорациями — у декораций (Doodads) нет ограниченного запаса здоровья, что уже исключает их из списка интерактивных объектов.Разрушаемый объект (Destructable)
itemwidgetСсылка на объект предмета. В Редакторе объектов предметы создаются и изменяются на вкладке «Предметы» (Items).Предмет (Item)
abilityagentСейчас этот тип не используется, потому что Blizzard отправили его на покой за ненадобностью. Сейчас для ссылок на способности используются не объекты, а их идентификаторы — числа. Функцию GetSpellAbility(), судя по всему, поленились вырезать из движка, как и сам тип, а поддержку записи ссылок этого типа в хеш-таблицу добавили просто для полноты картины.
buffabilityЕщё один неиспользуемый тип, ранее он предназначался для хранения ссылок на заклинания, теперь на заклинания можно также ссылаться при помощи их идентификаторов.
forceagentСсылка на объект группы игроков. Эти объекты — это таблицы, в которые можно помещать идентификаторы объектов типа player.Группа игроков (Force)
groupagentСсылка на объект группы боевых единиц. Как и объекты, на которые ссылается тип force, они представляют собой таблицы, только в них хранятся идентификаторы объектов типа unit.Отряд (Unit Group)
triggeragentСсылка на объект триггера. Для тех, кто с GUI не знаком, триггерами называют подобия файлов, на которые условно делится весь код в Редакторе триггеров. В GUI они могут содержать события, условия и действия. Преобразованные в текст триггеры содержат в себе функции, из которых обязательной для классической версии JASS является только функция инициализации.Триггер (Trigger)
triggerconditionagentСсылка на объект условия триггера. Не может быть удалена из памяти напрямую. Подробнее об этом читайте в описании типа event.
triggeractionhandleСсылка на объект действия триггера. Не может быть удалена из памяти напрямую. Подробнее об этом читайте в описании типа event.
timeragentСсылка на объект таймера. Такие объекты позволяют осуществлять обратный отсчёт и управлять им.Таймер (Timer)
locationagentСсылка на объект-точку. Точкой может быть любая отдельно взятая на карте точка по координатам X и Y. При помощи точки также можно определить высоту рельефа Z над уровнем карты в точке по координатам X и Y. Точка (Point)
regionagentСсылка на объект-регион. Не стоит путать регионы с тем, что называется областями в Редакторе триггеров. Регион — это группа квадратных областей на карте. Если Вы добавите точку, то в регион добавится квадрат 32х32 с центром в этой точке. Самая близкая аналогия — это group, только вместо идентификаторов боевых единиц в регионе содержатся идентификаторы областей. Очень удобно объединять много областей в регион, чтобы потом проверять только вход-выход в регион, а не добавлять в триггер по событию на каждую область.
rectagentСсылка на объект квадратной области, которая строится по двум точкам, образующим их диагональ. Слово Rect, которое использовано для наименования типа — это сокращение от слова Rectangle (в переводе означающего «прямоугольник»).Область (Region)
boolexpragentУказатель на функцию, которая возвращает данные типа boolean. Создаётся функциями Filter и Condition для дальнейшей передачи в условия триггера либо условия фильтрации игроков / боевых единиц (для добавления их в группы). Обычно условия, которые передают в boolexpr, абстрактны.
soundagentСсылка на звуковые объекты. Такие объекты могут быть предсозданы в Редакторе звуков, а могут быть созданы JASS-программистом после добавления звука в Менеджер импорта либо взятого из стандартной библиотеки. Звук (Sound)
conditionfuncboolexprСсылка на объект-условное выражение, предназначенное для использования в условиях триггеров. Конструируется функцией Condition.
filterfuncboolexprСсылка на объект-условное выражение, предназначенное для использования в фильтрующих функциях, запускающихся при добавлении идентификаторов боевых единиц или идентификаторов игроков в группы. Конструируется функцией Filter.
unitpoolhandleСсылка на объект-таблицу типов боевых единиц. Такая таблица предназначена для генерации случайного типа боевой единицы с равнораспределённой или неравнораспределённой вероятностью (поддерживается система весов).
itempoolhandleСсылка на объект-таблицу типов предметов. Такая таблица предназначена для генерации случайного типа предмета с равнораспределённой или неравнораспределённой вероятностью (поддерживается система весов).
racehandleСсылка на идентификатор расы.Раса (Race)
alliancetypehandleСсылка на объект-идентификатор аспекта союзничества. Под аспектами союзничества подразумеваются факторы, в отношении которых один игрок считается союзником по отношению к другому (благодаря наличию этих аспектов, можно сделать так, чтобы войска, подконтрольные одному игроку, не нападали на войска другого игрока, но при этом общего обзора у них не было).
racepreferencehandleСсылка на идентификаторы предустановленных в настройках карты рас. Благодаря наличию этих объектов можно программно узнать, какая раса была задана в настройках карты для каждого игрока (вне зависимости от того, какую расу он на самом деле выбрал).
gamestatehandleСсылка на объект-игровой параметр. В качестве примера игрового параметра могу привести внутриигровое время суток.
igamestategamestateСсылка на объект-игровой параметр, представленный целочисленной. Пример такого параметра — выход игрока из игры (дисконнект).
fgamestategamestateСсылка на объект-игровой параметр, представленный числом с плавающей запятой. Пример такого параметра — внутриигровое время суток.
playerstatehandleСсылка на объект-параметр игрока. Такими параметрами могут являться количество его ресурсов (золото, древесина, пища), а также некоторые другие параметры, например, является ли игрок наблюдателем.
playerscorehandleСсылка на объект-параметр игрока, который обновляется в процессе игры и выводится на финальный экран (счёт игрока).
playergameresulthandleСсылка на идентификатор, описывающий исход игры для игрока. Возможно всего четыре различных исхода — победа, поражение, ничья и нейтралитет.
unitstatehandleСсылка на идентификатор параметра боевой единицы. Примечательно, но таких параметра всего четыре — здоровье, мана, максимальное здоровье и максимальная мана, причём максимальные параметры получить при помощи функций, связанных с unitstate можно, а задать нельзя.
aidifficultyhandleСсылка на идентификатор уровня сложности искусственного интеллекта (для тех игроков, которыми управляет компьютер). Всего можно задать три уровня сложности компьютерных игроков — лёгкий, средний и сложный.
eventidhandleСсылка на идентификаторы событий. Эти идентификаторы содержат ссылки на все возможные события, отлавливаемые триггерами, что позволяет добавлять в триггер несколько событий и путём сравнения узнавать, какое из событий сработало.
gameeventeventidСсылка на идентификаторы событий, связанных с игровым процессом. Сюда входят загрузка игры из файла сохранения и сохранение игры, истечение таймера, открытие подменю «построить» и многое другое.
playereventeventidСсылка на идентификаторы событий, связанных с игроками. В эту категорию попадают нажатия игроком клавиш-стрелок на клавиатуре, выход игрока из игры и т. п.
playeruniteventeventidСсылка на идентификаторы событий, связанных с боевыми единицами, подконтрольными определённому игроку. Среди них смерть боевой единицы, её разложение, обнаружение, повышение уровня у героев и т.п.
uniteventeventidСсылка на идентификаторы событий, связанных с боевыми единицами. Содержат тот же арсенал событий, что и playerunitevent, но с той разницей, что не уточняет владельца боевой единицы.
limitopeventidСсылка на идентификатор вида оператора, который может быть использован в событиях сравнения величины какого-либо параметра игры, боевой единицы или игрока. Какой-то уж слишком нелепый хардкод, если Вам интересно моё мнение. Сам без понятия, зачем так нужно было делать. Однако, там действительно таблица ссылок.
widgeteventeventidСсылка на идентификаторы событий, связанных с типом widget (напоминаю, что это интерактивные объекты, обладающие параметром «здоровье»).
dialogeventeventidСсылка на идентификаторы событий, связанных с игровыми диалоговыми окнами. Подробнее Вы можете узнать в описании типов button и dialog.
unittypehandleСсылка на идентификаторы разновидностей боевых единиц. Не путайте с триггерным типом, который называется Тип объекта (Unit Type). В триггерах он представляет собой целое число, которое является идентификатором типа боевой единицы, пригодном (в отличие от unittype в JASS) для использования в unitpool.
gamespeedhandleСсылка на идентификаторы, определяющие возможные варианты скорости игры (очень медленная, медленная, нормальная, быстрая и очень быстрая). Скорее всего, таблицы в себе не содержит, как и тип player, но не знаю наверняка. Чтобы я не повторял одно и то же на протяжении всей статьи, давайте договоримся так — тип, который хранит в себе идентификаторы, таблицу в себе не содержит и является на самом деле числом, представленным как псевдообъект. Скорость игры (Game Speed)
gamedifficultyhandleСсылка на идентификаторы, определяющие возможные уровни сложности игры (сложность регулирует скорость и рациональность принимаемых игроком-компьютером решений, а также в некоторых случаях регулирует ресурсы, находящиеся в распоряжении игрока-человека. Таким образом, игрок-человек находится в прямо пропорциональной зависимости от сложности игры, а игрок-компьютер — в обратно пропорциональной, потому что с рост уровня сложности игры для игрока-человека означает облегчение задачи игроку-компьютеру и наоборот.
gametypehandleСсылка на идентификаторы, описывающие возможные правила игры. Среди них есть классический режим сражения, режим арены («каждый сам за себя», Free For All или FFA) и прочие.
mapflaghandleСсылка на идентификаторы, описывающие параметры карты. В их числе наличие на карте тумана войны, разрешены ли наблюдатели/судьи, разрешение или запрет на изменение параметров союза и т. д.
mapvisibilityhandleНеиспользуемый тип, который просто не вырезали из игры (такой как ability или buff). Ранее содержал параметры видимости карты, но потом их перенесли в mapflag’и, посчитав это чрезмерным делением на типы. Здесь соглашусь.
mapsettinghandleТакже неиспользуемый тип, ранее содержавший настройки карты, которые ныне также входят в тип mapflag.
mapdensityhandleСсылка на идентификаторы, описывающие интенсивность погодных эффектов на карте. Таких идентификатора интенсивности четыре: отсутствует, малая, средняя, большая.
mapcontrolhandleСсылка на идентификаторы, описывающие возможные варианты того, что может управлять игроком, то есть человек, обычный компьютер или специально запрограммированный компьютер (т.е. «спасаемые» игроки или нейтрально-враждебное поведение).
playerslotstatehandleСсылка на идентификаторы, описывающие состояние слота (зарезервированного картой места) игрока. Их немного — пустой, активный или оставленный игроком (т.е. игрок вышел из игры).
volumegrouphandleСсылка на идентификаторы, описывающие звуковые группы, взаимодействующие со звуковым движком игры. В WarCraft III существует 8 различных звуковых групп, на которые разбиты все игровые звуки, в том числе и музыка. Собственные группы создавать нельзя: в JASS нет функции для инициализации новых экземпляров volumegroup. Группировка звуков позволяет экономить потребляемую память. Стоит заметить, что одновременное воспроизведение более одного звука одной и той же группы невозможно, то есть наслаиваться друг на друга могут только звуки из разных звуковых групп.
camerafieldhandleСсылка на идентификатор параметра объекта камеры (camerasetup), такой как угол, высота, удалённость и т.д.
camerasetuphandleСсылка на объект камеры. Тип назван camerasetup, так как по факту это не что иное, как таблица настроек (setup) для игровой камеры (camera). Все возможные параметры, которые можно изменить у камеры, описаны типом camerafield. Камера (Camera Object)
playercolorhandleСсылка на идентификатор цвета игрока. Как и в случае со звуковыми группами, новые цвета разработчики игры создавать не дают. Цвет игрока (Player Color)
placementhandleСсылка на идентификатор параметра расположения игроков на карте. При сохранении карты World Editor обязывает создавать стартовые позиции для каждого активного слота игрока. Так вот, благодаря этому типу такими позициями можно манипулировать. Можно «разбросать» игроков в случайном порядке по всем стартовым позициям, можно поставить строгую зависимость (красного игрока на красную стартовую позицию, синего — на синюю и т.п.), можно использовать настройки карты, а можно расположить союзников рядом друг с другом (в остальном порядок расположения при этом случаен).
startlocpriohandleСсылка на идентификатор уровеня приоритетности стартовой позиции для обработки (низкий, обычный или высокий). Если Вы не понимаете, что только что прочли, просто запомните, что чем выше приоритет, тем больше шанс на то, что эта стартовая локация будет обработана раньше других.
raritycontrolhandleСсылка на идентификатор частоты проигрывания анимации у боевых единиц. Возможны только два варианта частоты — частая и редкая. Дело в том, что у боевых единиц может быть несколько вариантов анимации для некоторых состояний (например, stand, когда боевая единица просто стоит на месте, ожидая приказов), проигрывающихся в случайном порядке. При помощи этого типа можно сделать так, чтобы некоторые из них появлялись чаще других.
blendmodehandleСсылка на идентификатор режима наложения изображений, которые относятся к группе кинематографических фильтров (это изображения, применяемые в основном для придания большей атмосферы или эффектности внутриигровым роликам). Это не совсем те режимы наложения, которые встречаются в графических редакторах, таких как GIMP. Это уже тема другой статьи.
texmapflagshandleСсылка на идентификатор серии инструкций для обработки текстурных карт объектов при наложении кинематографического фильтра. Чтобы получить более детальное представление о текстурных картах, прочтите статью о UV-развёртке, именно с ней взаимодействуют инструкции этого типа.
effectagentСсылка на объект-спецэффект. В WarCraft III объекты спецэффектов — это обычные модельки, с которыми в игре никак нельзя взаимодействовать, но можно их видеть. Могут быть прикреплены к определённым точкам модели боевой единицы либо привязаны к точке на карте. Спецэффект (Special Effect)
effecttypehandleСсылка на идентификатор типа спецэффектов. Это та небольшая часть поддержки Редактора объектов, которую разработчики заботливо интегрировали в JASS. Типы спецэффектов — это такие поля у любой способности в Редакторе объектов, где хранятся пути к спецэффектам для различных назначений. О назначении этого типа узнал из материала Дуосоры о функциях и ссылки Николаса сообщением ниже на статью о нём.
weathereffecthandleСсылка на объект-погодный эффект. Погодные эффекты — это специальные модели, создающие погоду в игре. К ним относятся дожди, туманы и т.п. Погодный эффект (Weather Effect)
terraindeformationhandleСсылка на объект-деформацию рельефа. Благодаря деформированию рельефа средствами JASS и этому типу можно изменять рельеф прямо в игре. Деформация рельефа (Terrain Deformation)
fogstatehandleСсылка на идентификатор функции тумана войны. Функций немного: спрятать с сокрытием (в этом состоянии туман войны закрашивает область чёрным цветом без возможности её просмотра, даже если игрок уже разведал её), спрятать без сокрытия (стандартный туман войны: данная область карты «сереет» для игрока и не обновляет её для него, если там нет его активных боевых единиц), показать (область видна и предоставляет актуальную информацию).
fogmodifieragentСсылка на объект-модификатор видимости. Такой модификатор изменяет в определённом регионе стандартные правила тумана войны, раскрывая его, маскируя его или отключая туман войны в его пределах. Модификатор видимости (Visibility Modifier)
dialogagentСсылка на объект-игровое диалоговое окно. В WarCraft III эти диалоги очень близки к модальным на уровне окна за тем исключением, что в многопользовательской игре они не приостанавливают игру автоматически. В диалоги можно добавлять кнопки. Диалог (Dialog)
buttonagentСсылка на объект-кнопку определённого игрового диалогового окна. Кнопка (Dialog Button)
questagentСсылка на объект-квест. Такие объекты располагаются в меню заданий. По классификации задания делятся на основные и дополнительные. Технически, это ссылка на таблицу (квестов), в которой хранятся таблицы (условия, например), а в каждой — ссылка на таблицу (параметров) , которая в тёмном чулане хранится. ..Задание (Quest)
questitemagentСсылка на объект-требование для успешного выполнения задания, то есть условие задания. Это просто ряд строчек, которые пишутся в специально отведённой колонке задания в соответствующем меню. Оформлены они, всё же, как объекты. Их можно пометить выполненными или проваленными. Условия задания (Quest Requirement)
defeatconditionagentСсылка на объект-условие победы или поражения. При этом в файле common.j мало функций, связанных с этим типом, в основном — создание его экземпляра, уничтожение его экземпляра и задание описания его экземпляру. Условие поражения (Defeat Condition)
timerdialogagentСсылка на объект-окно таймера. Такие окна показываются в правом верхнем углу экрана и могут отображать название и оставшееся время до истечения таймера. Эти окна всегда отображаются выше объектов multiboard. Таких окон может быть несколько, они выстраиваются по горизонтали с выравниванием вправо. Окно таймера (Timer Window)
leaderboardagentСсылка на объект-таблицу рекордов. Конечно, это название не ограничивает спектр их применения только как таблиц рекордов. В таких таблицах может содержаться название (наверху), под которым содержатся две колонки — ник игрока и целочисленная (условно назовём её «счётом» игрока). Эти таблицы всегда отображаются ниже объектов timerdialog и multiboard. Больше одного экземпляра leaderboard вывести на экран нельзя, но создавать и менять один экземпляр на другой можно. Таблица рекордов (Leaderboard)
multiboardagentСсылка на объект-расширенную таблицу. Иногда эти объекты называют мультидосками (от англ. multi board), иногда их зовут меню паузы (по названию из русской официальной локализации игры), но правда в том, что multiboard — это не что иное, как таблица универсального назначения (multi-purpose board). Такие таблицы всегда отображаются ниже объектов timerdialog и выше объектов leaderboard. Как и с leaderboard, больше одного multiboard одновременно вывести на экран нельзя. Меню паузы (Multiboard)
multiboarditemagentСсылка на объект-ячейку расширенной таблицы. Ячейки могут содержать в себе текст и иконку перед ним; их ширину менять можно, а высоту — нет. Можно также отображать или прятать как иконку, так и текст.
trackableagentСсылка на специальный объект, способный отслеживать события указателя мыши (наведение и нажатие на него). К сожалению, всю карту для отслеживания координат указателя ими заполнить нельзя (да и от существующих будет много неприятностей — упадёт производительность карты в игре). Их также нельзя изменять, перемещать и удалять.
gamecacheagentСсылка на объект-игровой кэш. В WarCraft III это двумерный массив со строковыми ключами, который может сохранять в себе различные игровые данные и хранится в отдельном специально сгенерированном файле. Большинство функций этого типа было ликвидировано в обновлении 1.24, но до этого игровой кэш имел широкое применение. Буфер игры (Game Cache)
versionhandleСсылка на идентификатор версии игры. Здесь речь идёт не о конкретном числе (1.24 или 1.27), а о том, оригинал это или оригинал с дополнением (Reign of Chaos или The Frozen Throne). Он добавлен для увеличения совместимости дополнения с оригиналом.
itemtypehandleСсылка на идентификатор класса предмета. Не путайте классы предметов с типами предметов, которые являются целочисленными! В Редакторе объектов на вкладке Предметы (Items) есть папки, по которым они классифицируются (имеющие заряды, артефакты, прочие и т.п.). Этот тип позволяет узнать, в какой из этих папок находится предмет. Класс предмета (Item Class)
texttaghandleСсылка на объект-всплывающий текст. Разработчики также установили ограничение на предельно допустимое количество одновременно созданных экземпляров объектов всплывающего текста — 99. Такие тексты можно анимировать, показывать, скрывать, окрашивать в определённые цвета, менять им позицию и т.п. Плавающий текст (Floating Text)
attacktypehandleСсылка на идентификатор типа атаки. Используется в функциях нанесения урона.
damagetypehandleСсылка на идентификатор типа урона. Используется в функциях нанесения урона.
weapontypehandleСсылка на идентификатор типа оружия. Используется в функциях нанесения урона.
soundtypehandleСсылка на идентификатор типа звука способности. Их всего два — зацикленный и незацикленный. Это тоже значения, получаемые из звукового поля любой способности в Редакторе объектов.
lightninghandleСсылка на объект-молнию. На самом деле, это не молния в погодном смысле слова, работает такой объект иначе. Молнии в WarCraft III — это прямые линии, заполненные определённой текстурой (её называют типом молнии). Можно менять их размер, высоту, положение на карте. Такие объекты используются в том числе в стандартных способностях (Цепь молний орочьего Говорящего с духами, Похищение маны эльфийского Чародея крови и т.д.). Можно создавать и импортировать собственные типы молний, но это уже тема для отдельной статьи. Молния (Lightning)
pathingtypehandleСсылка на идентификатор типа проходимости. Тип проходимости определяет, что может ходить, плыть или летать в конкретном квадрате.
imagehandleСсылка на объект изображения. Эти изображения могут быть наложены на поверхность карты и будут располагаться по заданным координатам x, y и z при их создании. В основном этот тип используют для дополнительного украшения карты (например, в карте TCX для отображения логотипа в центре арены использован именно этот тип). Изображение (Image)
ubersplathandleСсылка на объект-уберсплэт. В терминологии WarCraft III уберсплэты — это специальная графика на земле, которая по умолчанию есть у зданий (как у действующих, так и у разрушенных), а также у некоторых спецэффектов, оставляющих следы на земле (например, Огненный столб Чародея крови оставляет подобие «выжженной» земли, которое затем постепенно исчезает).
hashtableagentСсылка на объект-хэш-таблицу. Она представляет собой классический двумерные массив, оформленные в функциональную оболочку и поддерживающие идентификаторы в диапазоне, который позволяет хранить integer. Хэш-таблица (Hashtable)

Стоит также привести таблицу операторов, которые могут быть использованы при работе с различными данными. Она поможет Вам понять, что можно при помощи JASS сделать с ними.
Договоримся, что a и b — это переменные одного и того же типа.

Об условных операторах речь пойдёт в разделе об условиях.

Под колонкой «Типы данных» подразумевается перечень типов, с которыми такой оператор можно использовать. Если нарушить это правило, при сохранении карты на экран будет выведена ошибка «Bad types for a binary operator».

Оператор Типы данных Использование Принцип работы
Сложение integer, real, string a + b Для типов integer и real — суммирует значения a и b. В случае выхода суммы за пределы допустимых значений этих типов, то результат вписывается в ОДЗ по специальной формуле (если нарушена нижняя граница: [Mx-(b+(Mn-a))]; если нарушена верхняя граница: [Mn+(b-(Mx-a))], где Mn — нижняя граница, а Mx — верхняя граница). Для типа string — это конкатенация строк, то есть их склеивание в одну путём приписывания строки b непосредственно после строки a.
Вычитание integer, real a — b Отнимает значение b от значения a. В случае выхода разности за пределы допустимых значений результат также вписывается в ОДЗ по тем же формулам, что и после сложения.
Умножение integer, real a * b Умножает значение a на значение b. В случае выхода произведения за пределы допустимых значений результат также вписывается в ОДЗ по тем же формулам, что и после сложения.
Деление integer, real a / b Делит значение a на значение b. В случае выхода частного за пределы допустимых значений результат также вписывается в ОДЗ по тем же формулам, что и после сложения.

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

Начнём знакомство с определений, чтобы Вы понимали, что такое переменная, её область видимости и чётко понимали принцип её работы.

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

Процесс выделения памяти под переменную называется её аллокацией, а процесс освобождения выделенной под неё памяти — деаллокацией. Процесс присвоения переменной имени называется её именованием.

Проще всего сравнить переменную с ящиком в столе. Стол — это вся память, ящик стола — часть этой памяти. Предположим, ящики расположены по вертикали и пронумерованы сверху вниз. Если говорить о пятом ящике как о ящике номер пять, тогда это указатель на ящик (номер ячейки памяти). Есть и другой вариант — хранить в ящике что-нибудь определённое и называть ящик не по номеру, а по названию. Например, ящик для тетрадей. Это обращение к ящику подобно обращению к нему не через указатель, а через переменную — ящик имеет не адрес, а название и выделен под определённый тип данных (тетради).

Переменные в JASS — это не сами области памяти, а ссылки на них. Похоже, разработчики серьёзно задумывались о безопасности, так как через ссылки можно реализовать ограничение доступа к памяти.

Объявление переменной — это процесс её аллокации и присвоения ей имени. Присвоение начального значения переменной называется её инициализацией.

Удаление переменной — это процесс её деаллокации и освобождения её имени для дальнейшего использования другими переменными.

» Как технически устроено присваивание

На самом деле, здесь всё устроено намного сложнее, чем кажется на первый взгляд. Машина технически работает только с числами. Поэтому если, к примеру, взять тип integer, то в переменную записывается указанное число. Если же взять тип string, то записывается адрес её значения в строковой таблице.

Таким образом, запись объектов-таблиц в переменную (в JASS за исключением типов integer, boolean и real все типы являются табличными) производится не путём их переноса из одной области памяти в другую, не путём их копирования, а путём указания в переменной числа-идентификатора этих таблиц в памяти или других таблицах.

Иначе возникает нелепая ситуация — присвоение одной переменной бы либо «клонировало» таблицу, оставляя её в одной переменной и создавая точную её копию (на момент присваивания) в другой, либо удаляла бы её из одной области памяти, перенося в другую, соответствующую адресу целевой переменной. Это сделало бы одновременное хранение объекта в нескольких переменных в актуальном состоянии невозможным.

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

Обнуление переменной — это присвоение переменной нулевого значения её типа. Оно необходимо, чтобы показать обработчику кода, что в переменной значения не содержится. Сама переменная при этом не удаляется из памяти.

Запомните! Средств для ручной деаллокации в JASS не предоставляется. Обнуление деаллокацией не является, потому что переменная всё ещё определена в памяти!

Переменные типов integer, real, string и boolean в обнулении не нуждаются, так как наследуются напрямую от соответстувующих типов языка программирования C, а это говорит о том, что на вышеперечисленные типы работает его встроенная сборка мусора. Это делает их обнуление бессмысленным.

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


По области видимости переменные разделяют на локальные и глобальные.

Локальная переменная — переменная, область видимости которой ограничена определённым блоком кода. Память под локальную переменную аллоцируется при её объявлении и деаллоцируется после окончания выполнения блока кода, видящего её, но при том условии, что эта переменная содержит нулевое значение.

Глобальная переменная — переменная, область видимости которой ограничивается пределами программы. То есть, её видит весь код программы.

В JASS глобальными переменными считаются:
  • Переменные, созданные в Редакторе переменных Редактора триггеров. При обращении к ним в коде перед их именем пишется приставка udg_, означающая Universally Defined Global (универсально объявленная глобальная переменная).
  • Переменные, объявленные внутри блока globals в файле war3map.j — в обычном (недиалектовом) JASS объявить этот блок непосредственно в коде не представляется возможным, но объявлять в нём переменные в уже сохранённой карте и потом работать с ними в World Editor вполне возможно.

По принципу хранения данных переменные делятся на немассивные и массивные.

Немассивная переменная (нуль-мерный массив, скаляр) — переменная, под которую отводится памяти ровно столько, сколько необходимо для хранения одной единицы данных её типа или для хранения ссылки на неё.

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

Массивная переменная — несколько скаляров, расположенных в памяти друг за другом. Эти скаляры называются элементами массива, а их количество называется размером массива.

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

Каждому элементу массива не нужно присваивать уникальное имя. Вместо этого достаточно лишь присвоить такое имя самой массивной переменной, а к её элементам обращаться через специальным образом приписываемое после имени число, уникальное для каждого элемента. Такое число называется индексом массива.

Далее в статье под словом «переменная» будет подразумеваться немассивная переменная, а под словом «массив» — массивная.


По размеру массивы бывают статические (имеют строго отведённое количество элементов) и динамические («подстраиваются» под наличие данных в массиве).

В JASS размер массива всегда статический — индексы могут принимать значения от 0 до 8191. Так как значения под индексом 8191 время от времени дают непредсказуемые сбои, безопасно использовать только индексы от 0 до 8190.

Индексов у массива может быть несколько. Их количество называется размерностью массива. Стоит различать размерность массива и его размер. Если под размером понимается диапазон индексов, то под размерностью понимается их количество. Таким образом:
  • Массивы без индекса называют скалярами. Графически обозначаются как точки.
  • Массивы с одним индексом называют одномерными или векторами. Графически обозначаются как отрезки. Это самая распространённая размерность массивов.
  • Массивы с двумя индексами называют двумерными или матрицами. Графически обозначаются как квадраты.
  • Массивы с тремя индексами называют трёхмерными или кубическими. Графически обозначаются как кубы.
  • Массивы более, чем с одним индексом называют многомерными.
  • Массивы более, чем с тремя индексами, имеют общее название — n-мерные массивы.

В обычном JASS поддерживаются только скаляры и векторы. Средствами языка возможно реализовать многомерность массивов, но синтаксис их использования будет желать лучшего.


Стоит отдельно рассказать о правилах, согласно которым переменной присваивается имя.

» Немного об именовании переменных Чтобы указать имя правильно, запомните следующее:
  • Разрешается использование латинского алфавита верхнего и нижнего регистров.
  • Разрешается использование цифр, символа нижнего подчёркивания.
  • Имя не может начинаться с цифры.
  • Имя не может быть используемым в JASS ключевым словом.
  • Имя не может совпадать с названием любого из типов данных.
Переменные в ряде случаев могут иметь одинаковые имена. Чтобы не запутаться, ниже приведён список того, в каких случаях к чему обращается код.
  • Название именованного блока кода (функции) может совпадать с именем глобальной переменной, потому что синтаксис при работе с блоком кода и при работе с переменной существенно отличается.
  • Название именованного блока кода не может совпадать с именем локальной переменной внутри этого блока.
  • Имя глобальной переменной может совпадать с именем локальной переменной. При этом в области видимости локальной переменной при обращении по этому имени будет происходить обращение к этой локальной переменной, в остальных случаях обращение по этому имени будет считаться обращением к глобальной переменной.

На этом краткий ликбез о переменных завершён.

Приступим к написанию Вашего первого кода. Разберёмся, что такое объявление и присвоение переменных не в теории, а на практике.

Научимся объявлять переменные.

Объявление целочисленной локальной переменной

local integer myInteger

Так выглядит код, который объявляет локальную переменную типа integer.

Как объявить переменную:
  • Строка, в которой объявляется локальная переменная, начинается с ключевого слова local и хотя бы одним знаком пробела после него. Оно означает, что переменная локальная. Глобальные переменные могут быть объявлены в коде только внутри специального блока globals. В случае с ними ключевое слово вовсе не требуется, но если Вы никогда не будете менять значение глобальной переменной, напишите ключевое слово constant, чтобы сэкономить память и дополнительно защитить переменную от изменения. С локальными переменными так делать нельзя — их ключевое слово — local и никакое другое.
  • После ключевого слова пишется название типа и хотя бы один знак пробела после него. В данном случае это тип integer (целое число). Если Вы сомневаетесь в том, какой тип Вам необходим или забыли его название, воспользуйтесь таблицей типов из предыдущих разделов.
  • После названия типа пишется имя переменной. В данном примере именем является myInteger.

Переменной любой области видимости, кроме глобальных переменных с ключевым словом constant, можно присваивать новые значения. Это делается так:

Присвоение переменной нового значения

set myInteger = 2
Разбор вышеуказанной строки:
  • Строка, задающая переменной значение, начинается с ключевого слова set и хотя бы одним знаком пробела после него.
  • После ключевого слова set пишется название (имя) переменной, заданное при инициализации.
  • После названия переменной в той же строке нужно поставить знак = с любым количеством знаков пробелов до и после него.
  • После знака равенства прописывается значение переменной из области допустимых значений её типа.

Переменной можно присваивать начальное значение непосредственно после её объявления. Это делается следующим образом:

Присвоение переменной начального значения

local integer myInteger = 2
Как присвоить переменной значение сразу после её объявления:
  • Объявить переменную.
  • После названия переменной в той же строке нужно поставить знак = с любым количеством знаков пробелов до и после него.
  • После знака равенства прописывается значение переменной из области допустимых значений её типа (иначе карта откажется сохраняться, пожаловавшись на то, что Вы присваиваете переменной недопустимое значение).

Как обращаться к переменной там, где нужно получить её значение? Очень просто!
Для обращения к переменной достаточно написать в месте, где требуется её значение, имя этой переменной.


Как объявить локальную переменную-массив? Точно так же, как и обычную, только между типом и названием добавляйте ключевое слово array (в переводе с английского означает «массив»). Значение при этом сразу задать нельзя.

Значение переменной-массива задаётся так же, как и обычной переменной, только после её имени ставятся квадратные скобки с индексом ячейки, в которую требуется записать (или из которой нужно получить) данные ([i], где i — индекс массива).


Больше о переменных сказать нечего. Теперь Вы знаете, как обращаться с ними.

Технически, код JASS представляет собой список функций, в которых могут присутствовать условные ветвления, циклы, действия с переменными и обращения к другим функциям. Так что функция — это один из четырёх базовых компонентов языка JASS (другими являются переменные, условия и циклы). Поэтому если Вы освоили работу с переменными и функциями, Вы больше чем наполовину освоили азы работы с JASS.

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

Функция — это часть кода, которую можно подключать к другим частям программы. Так как в JASS нет частей программы (программных юнитов) и программа фактически является одним сплошным списком функций, в JASS функции можно определить рекуррентным определением — как части кода, которые могут использоваться другими частями кода.
Функция состоят из аргументов и фактов тела.

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

» Хотите понять, почему рекурсия возможна и чем полезна? Загляните сюда.

Для начинающих программистов это может звучать несколько дико — то есть, как так допускается, что функция может вызывать сама себя? Разве она не будет постоянно «гонять» себя по кругу, не давая никакой пользы? Если да, то сколько на такой «прогон» нужно ресурсов?

Стоп.

Да, стоп.

Задавая такие вопросы, Вы не понимаете природы рекурсии. Функция не может «гонять» себя бесконечно: рекурсия имеет предельный уровень вложенности (т.е. количество раз, которые функция может вызывать сама себя, ограничено), а кроме того, можно ограничить вложенность до определённого уровня при помощи условных ветвлений (о них чуть позже). Это делает рекурсию очень удобным способом реализации перевода чисел, например, из десятичной в двоичную систему (делим число на два и сохраняем остаток, пока число не станет меньше двух).

У функций тоже есть область видимости. По правилам JASS функция может вызывать любые функции, помещённые выше, чем она сама, и себя саму, потому что функций, находящихся ниже, она «не видит». Это значит, что если Вы сначала объявляете функцию А, ниже неё объявляете функцию Б, а ниже этой — функцию В, то:
  • Функция В сможет вызывать функции А, Б и саму себя;
  • Функция Б сможет вызывать функцию А и саму себя, но не сможет вызывать функцию В, потому что функция В стоит ниже функции Б;
  • Функция А сможет вызывать только саму себя, потому что выше неё нет никаких функций.
Аргумент (параметр) функции — это технически локальная переменная функции, значение которой задаётся при вызове функции. Используется в пределах функции как обычная переменная — её значение можно менять в процессе выполнения функции. Одна функция может принимать один или более аргументов (при этом она не обязана их принимать, то есть может и не принимать их вообще), также может возвращать аргумент любого типа (или не возвращать ничего). Достаточно гибкая штука в обращении.

Тело функции — это перечень совершаемых функцией действий, которые выполнятся при её вызове. Говоря короче, это то, что функция делает. Тела у функции может и не быть вообще (только какой тогда смысл в такой функции?)
Кроме того, по правилам синтаксиса JASS на одной строке может располагаться только одно конкретное действие.

Анонимные функции — это функции без названия. Увы, JASS требует именовать все функции, поэтому поддержки этого типа функций в JASS нет.

В JASS поддерживаются три типа функций — общие, постоянные и скрытые.

  • Общая функция — обыкновенная, ничем не примечательная функция, которая обладает всеми характеристиками функций без изменений.
  • Постоянная функция — такая функция, которая может возвращать только постоянные значения, например, чётко указанные числа (такие как 8, 10, 14 и т.п.). Работает быстрее, чем общая функция, но не имеет широкого спектра применения, так как ограничивает работу с переменными.
  • Скрытая функция — это функция, которая находится в числе перечисленных в файле common.j. Реализация скрытых функций (или нативных, как их ещё называют) осуществлена на более низком уровне абстракции (находится в составе ядра программы), а в JASS они объявлены на правах базовых.

Разобравшись в теории, можно перейти к практике, то есть к непосредственному объявлению функции в JASS.

Структура функции достаточно проста:

Простая функция без аргументов и тела

Выделить код
function MyFunction takes nothing returns nothing

endfunction
Как объявить функцию:
  • Строка, в которой объявляется функция, начинается с приставки, которая определяет тип функции и хотя бы одним знаком пробела после неё. Таким образом:
    • Скрытые функции начинаются с приставки native. В переводе с английского приставка native означает «родная». По крайней мере, в классическом JASS их нельзя объявить напрямую, но есть статьи, в которых объясняется, как «вшить» в ядро что-нибудь ещё.
    • Постоянные функции начинаются с приставки constant.
    • Общие функции не имеют приставок.
  • После приставки (или же сразу — для общих функций) для всех типов функций указывается ключевое слово function, которое означает, что здесь объявляется функция. После ключевого слова нужно поставить хотя бы один знак пробела.
  • После ключевого слова function указывается имя функции (в примере выше это MyFunction) с хотя бы одним знаком пробела после него. Требования к имени функции такие же, как и к имени локальной переменной — уникальное, состоит из латиницы любого регистра, знака нижнего подчёркивания и цифр, причём имя не может начинаться с цифры.
  • После имени функции указывается ключевое слово takes, которое означает, что далее будут указаны аргументы функции (ставьте это слово, даже если аргументов не будет, это Ваша обязанность). В переводе с английского языка это слово означает «принимает». После этого ключевого слова необходимо поставить хотя бы один знак пробела.
  • После ключевого слова takes перечисляются через запятую аргументы функции в формате тип имя — как при объявлении переменных, причём на именование аргументов распространяются те же правила (например: integer i, unit u, timer t). Тип и имя разделяются как минимум одним знаком пробела. После последнего указанного аргумента запятая не ставится. Также запятая не ставится, если аргумент один. Если функция не принимает аргументов, то замените их на ключевое слово nothing, которое в переводе с английского означает «ничего». Разумеется, запятая после него тоже не ставится.
  • После списка аргументов указывается ключевое слово returns и хотя бы один знак пробела после него. В переводе с английского языка это слово означает «возвращает».
  • После ключевого слова returns укажите тип значения, которое функция возвращает после выполнения (например, если функция возвращает булевый тип, укажите boolean). Если функция ничего не возвращает, укажите ключевое слово nothing.
  • Строки ниже той, которая только что была объяснена — это тело функции.
  • На строке, следующей за последней строкой тела функции, напишите только ключевое слово endfunction. Оно означает, что функция закончена. Всё, что расположено ниже, функция не «видит» и своим телом не считает.
Что может находиться в теле функции?
  • Локальные переменные. Они указываются по одной на строчку, причём до всего остального содержимого тела функции. О них уже много рассказывалось выше, так что заострять на них внимание здесь нет смысла.
  • Комментарии. Обычно выделяются серым цветом. Комментарии — это такие части кода, которые никак не обрабатываются и не запускаются. Начало комментария обозначается двойным слэшем (символы // называют открывающими символами комментариев). Комментарием считается вся остальная часть строки после двойного слэша. Там можно писать всевозможные пояснения к коду. Увы, многострочные комментарии в классическом JASS не поддерживаются, но поддерживаются в его диалектах (vJASS, cJASS). Именно в силу того, что они не обрабатываются, комментарии можно писать в любой части кода, даже вне функций.
  • Работа с переменными. Изменение значений локальных и глобальных переменных.
  • Вызовы функций. Обращение к другим функциям — самый распространённый вид операции, которая помещается в тело функции. Как говорилось в разделе теории, JASS состоит примерно на 90% из функций и обращений к ним.
  • Условные ветвления. О них речь пойдёт в следующем разделе статьи.
  • Циклы. Эта полезная конструкция также будет рассмотрена далее в рамках этой статьи.
  • Возврат значения. Прерывает исполнение операций в теле функции, возвращая значение указанного при создании функции типа.

Итак, Вы умеете создавать функцию (и понимаете, что и для чего пишете). Пришло время научиться вызывать функцию.

Функция и её вызов

Выделить код
function A takes integer i returns nothing
// Тело функции A
endfunction

function B takes nothing returns nothing
call A(23)
endfunction
Как вызвать функцию:
  • Строка, которая начинается с вызова функции, должна начинаться с ключевого слова call (оно в переводе с английского означает «вызвать») и хотя бы одного знака пробела после него.
  • После ключевого слова call указывается имя функции, которую нужно вызвать.
  • После имени функции ставится открывающая скобка. Она означает, что далее будут перечисляться значения для параметров, которые она принимает.
  • После открывающей скобки через запятую перечисляются значения для параметров, принимаемых вызываемой функцией. Порядок перечисления тот же, что и порядок, в котором вызываемая функция их требует. Если она просит параметры (integer i, real r, unit u), то сначала нужно указать целое число (которое запишется в локальную переменную i вызываемой функции), потом число с плавающей запятой (оно запишется в локальную переменную r вызываемой функции), потом ссылку на объект-боевую единицу (она запишется в переменную u вызываемой функции). Порядок менять нельзя. Так требует синтаксис языка. После последнего значения параметра запятая не ставится. Если функция параметров не принимает, Вы ничего не указываете.
  • После передачи значений для параметров ставьте закрывающую скобку.

В примере выше принимаемому функцией А параметру i (целое число) при её вызове функцией B было присвоено значение 23.

Теперь Вы умеете вызывать функции.


Зная, как функции создаются и вызываются, Вы можете перейти к изучению возврата функцией значения.

Функция, возвращающая значение

Выделить код
function A takes integer i returns integer
    // Функция вернёт число i, умноженное на два. Если i = 2, то будет возвращено число 4.
    return i*2
endfunction
Для того, чтобы вернуть из функции значение:
  • Строка, которая возвращает значение, должна начинаться ключевым словом return. Оно означает «вернуть». После него необходимо поставить хотя бы один знак пробела.
  • После ключевого слова return напишите возвращаемое значение. Оно может быть вызовом другой функции, арифметической операцией, постоянным значением и т.д. Если функция ничего не возвращает, просто ничего больше не пишите.

Помните, что после возврата значения исполнение функции прерывается (не останавливается, а именно прерывается, поскольку функция, вернувшая значение, дальнейшее выполнение не осуществляет).


Поздравляю, Вы прошли ликбез о функциях! Перейдём к изучению условий.

Как и до этого, для начала — немного теории. Вам нужно понимать, что Вы делаете, поэтому не ленитесь читать и вникать в смысл определений.

Условие (конструкция ветвления) — оператор, который выполняет одну или несколько команд, указанных внутри него, но при условии того, что логическое значение в его составе, расположенное до этих команд, возвращает значение истины.

» О конструкциях ветвления для новичков в программировании

Прочитав это определение, Вы могли впасть в недоумение, не понимая, что Вы только что прочли. Вы пришли за разъяснением. Хорошо, читайте.

Когда выполняется определённая функция, некоторые её действия иногда необходимо выполнять не всегда, а только при определённом условии. Допустим, если Вы проверяете количество цифр в каком-либо числе, Вы не сможете возвращать одинаковое значение для каждого числа (не в каждом же числе только одна цифра, верно?). В таких случаях на помощь приходит конструкция ветвления.

Она позволяет выстроить необходимую логику. В нашем примере:
  • Если число меньше нуля, то условия ниже будут сравнивать не переданное в функцию число, а его модуль (просто чтобы убрать знак минуса).
  • Если число меньше десяти, то в нём одна цифра.
  • Если число больше девяти и меньше ста, то в нём две цифры.
  • Если число больше девяносто девяти и меньше тысячи, то в нём три цифры.
  • И так далее до максимально возможного в типе integer количества цифр.

Конечно, проверку цифр в числе можно сделать намного проще и ресурсоэкономнее, но цель данного примера — показать, на что способны условные конструкции.

Видите? Такая конструкция позволяет с лёгкостью сделать то, что нам надо. Проверка диапазона значений числа (меньше десяти, больше девяти и меньше ста и т.д.) и есть то самое «логическое значение в составе оператора», о котором шла речь.

Это действительно один огромный оператор. Не пугайтесь.


Для того, чтобы работать с условиями, необходимо понять, как принцип работы с логическим типом boolean. Ранее о нём говорилось, но вот о работе с ним — нет. Логический параметр может быть переменной, а может быть и функцией, возвращающей булевое значение (true или false, т.е. «истина» или «ложь»).

При помощи логических параметров можно сравнивать, что угодно, проверяя истинность или ложность выражения. Всё, что происходит при сравнении логического типа — это сведение выражения к одному определённому результату — истине (true) или лжи (false). Для этого есть приставка not («не»), связки and («и») и or («или»).

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

Любой оператор сравнивает два одинаковых типа или два неявно приводимых к одинаковым.

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

НазваниеРеализация в JASSТипы, с которыми работает операторПринцип работы
Равноa == bЛюбой типЕсли значение переменной а соответствует значению переменной b, то операция вернёт результат true (истина), иначе она вернёт результат false (ложь).
Не равноa != bЛюбой типЕсли значение переменной а не соответствует значению переменной b, то операция вернёт результат true (истина), иначе она вернёт результат false (ложь).
Большеa > binteger, real, stringЕсли значение переменной а больше, чем значение переменной b, то операция вернёт результат true (истина), иначе она вернёт результат false (ложь).
Меньшеa < binteger, real, stringЕсли значение переменной а меньше, чем значение переменной b, то операция вернёт результат true (истина), иначе она вернёт результат false (ложь).
Больше или равноa >= binteger, real, stringЕсли значение переменной а больше, чем значение переменной b, либо соответствует её значению, то операция вернёт результат true (истина), иначе она вернёт результат false (ложь).
Меньше или равноa <= binteger, real, stringЕсли значение переменной а меньше, чем значение переменной b, либо соответствует её значению, то операция вернёт результат true (истина), иначе она вернёт результат false (ложь).

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

» Краткий курс логики, необходимый программисту

Чтобы упростить понимание, все логические функции сведены в удобную таблицу.
Договоримся условно, что a и b в таблице ниже — это логические переменные (типа boolean).

НазваниеСинтаксис в JASSПринцип работы
Отрицаниеnot a«Меняет знак» логического выражения. Если в переменной а получается значение true (истина), то выражение not a даст в результате false (ложь) и наоборот.
Конъюнкцияa and bЕсли переменные a и b обе истинны, то конъюнкция даст в результате значение true (истина), иначе она даст в результате значение false (ложь).
Дизъюнкцияa or bЕсли хотя бы одна из переменных a и b содержит значение true, то дизъюнкция в результате даст значение true (истина), если же обе содержат значение false, то и дизъюнкция даст в результате значение false (ложь).
Импликация(not a) or bУсловная конструкция формы «посылка — следствие». Возвращает true (истина) во всех случаях, кроме того, когда переменная а содержит значение true (истина), а переменная b содержит значение false (ложь). ) в JASS нет, обходимся без него, используя правило «одно или другое, но не оба». Возвращает значение true (истина), если у переменных a и b значения разные (одна из них истинна, а другая — ложна) и значение false (ложь) в других случаях.
Штрих Шеффераnot (a and b)Эта операция также известна под названием NAND. Если значения переменных a и b оба истинны, то эта операция вернёт в результате значение false (ложь). В любом другом случае она вернёт значение true (истина).
Стрелка Пирсаnot (a or b)Эта операция также известна под названием NOR. Фактически, это отрицание штриха Шеффера, то есть, эта операция вернёт значение true (истина) только в одном случае — если значения переменных a и b ложны.
Это все основные логические функции. Существуют ещё основные логические аксиомы и тождества, которые придут Вам на помощь при упрощении логических выражений. О них Вы сможете узнать здесь.

В JASS синтаксис простого условного блока достаточно нехитрый:

Простой условный блок

Выделить код
if b then
    // Действия, если b возвращает true.
endif
Как правильно объявить условный блок:
  • Строка, где объявляется условный блок, начинается с ключевого слова if и хотя бы одного знака пробела после него. Это слово в переводе с английского означает «если».
  • После ключевого слова if можно поместить переменную типа boolean, логическое значение (true или false напрямую), функцию, которая такое значение возвращает, сравнительную операцию (например, a == b) или логическую операцию (например, not b). Скобки разрешаются, но не обязательны. Когда этот параметр указан, поставьте один или более знак пробела после него.
  • Закончите строку ключевым словом then, которое в переводе с английского означает «то».
  • С новой строки начинается та часть тела условия, которая выполняется, если условное выражение b вернуло значение true (их ещё называют действиями после успеха проверки).
  • После того, как нужные действия перечислены (внутри условия тоже может быть условие), на новой строке поставьте ключевое слово endif, которое в дословном переводе с английского означает «закончить «если»».

Поздравляю, Вы создали своё первое условие. Но не будем останавливаться на достигнутом.


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

Условный блок с обработко й любого результата b

Выделить код
if b then
    // Действия, если b возвращает true.
else
    // Действия, если b возвращает false.
endif
» Как бы Вы делали, если бы такой конструкции не существовало Выделить код
if b then
    // Действия, если b возвращает true.
endif

if not b then
    // Действия, если b возвращает false.
endif

Всё отличие этого варианта условного блока от предыдущего в том, что вместо объявления отрицающего условия not b после действий в случае прохождения проверки на пустой строке до ключевого слова endif ставится ключевое слово else (означает «иначе» в переводе с английского), после чего с новой строки до того, как указывать ключевое слово endif, перечисляются действия в противном случае (если проверка НЕ прошла).


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

Конструкция с использованием elseif

Выделить код
if b then
    // Действия, если b возвращает true.
elseif c then
    // Действия, если b возвращает false, но c возвращает true.
elseif d then
    // Действия, если b и с возвращают false, а d возвращает true.
else
    // Действия, если ни одно из условий выше не даёт true в результате.
endif
» Как бы Вы обходились без неё

Таким образом

Выделить код
if b then
    // Действия, если b возвращает true.
else
    if c then
        // Действия, если b возвращает false, но c возвращает true.
    else
        if d then
            // Действия, если b и с возвращают false, а d возвращает true.
        else
            // Действия, если ни одно из условий выше не даёт true в результате.
        endif
    endif
endif

Выглядит громоздко, неправда ли?

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

Поздравляю Вас с успешным изучением условных конструкций! На горизонте — циклы.

Последний основной элемент языка JASS, который нужно разобрать — это циклы. Без них Вы не сможете реализовать большинство алгоритмов, либо их реализация получится настолько громоздкой, что просто не будет иметь смысла.

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

Цикл — это такая конструкция, которая используется для многократного повторения определённого набора действий. Начало повторения называется входом в цикл. Окончание повторения называется выходом из цикла. Для выхода из цикла обязательно наличие условия, при котором цикл закончится.

Виток цикла — каждое успешное выполнение его набора действий.

Циклы бывают следующих видов:
  • Безусловные (бесконечные) — такие циклы, которые из-за отсутствия условия (либо неправильной условной конструкции, которая всегда даёт один и тот же результат) повторяются неопределённое количество раз. Являются типичной ошибкой начинающих программистов.
  • Предусловные (циклы с предусловием) — такие циклы, которые содержат условие перед выполнением набора действий. Набор действий в цикле будет продолжать выполняться, пока условие будет возвращать значение true. При этом набор действий не будет выполнен ни разу, если условие изначально вернёт значение false — цикл при этом будет пропущен полностью. Их также называют while-циклами.
  • Постусловные (циклы с постусловием) — такие циклы, которые содержат условие после выполнения набора действий. Набор действий в цикле выполнится как минимум один раз и будет продолжать выполняться до тех пор, пока условие не вернёт значение true. Их также называют циклами «do…while», циклами «до» или циклами «repeat…until».
  • Общие (циклы с выходом из середины) — такие циклы, где условие может находиться в любом месте набора действий, таким образом прерывая цикл после себя, если условие возвращает значение true. Их также называют exitwhen-циклами. В JASS реализован только этот вид, но из него можно построить любой другой, об этом речь пойдёт в практической части.
  • Циклы со счётчиком (циклы «для») — разновидность циклов, где количество повторений строго привязывается к увеличению определённой целочисленной переменной до определённого значения (обычно с шагом 1, но можно с каждым витком цикла прибавлять к счётчику и больше, чем единицу). Счётчик также называют итератором (отсюда его традиционное имя i), а виток цикла — его итерацией. Также известны под названием циклов for.
  • Совместные (циклы просмотра) — такие циклы, предназначение которых — проведение набора действий с каждым элементом определённого множества (массива, хэш-таблицы или данных с подобной структурой организации). Их также называют циклами foreach.

Рассмотрим принцип работы циклов в JASS.

Самый простой цикл в JASS выглядит так:

Структура цикла

Выделить код
loop
    // Действия до проверки выхода из цикла.
    exitwhen b
    // Действия после проверки выхода из цикла.
endloop

Это цикл с выходом из середины. Как уже было оговорено, это — единственный тип циклов, который присутствует в инструментарии JASS.

Как построить общий цикл в JASS:
  • Строка, с которой начинается цикл, должна содержать только ключевое слово loop (в переводе с английского означает «цикл»).
  • На строках ниже той, где содержится ключевое слово loop, описываются действия, которые нужно сделать хотя бы один раз (до проверки условия выхода).
  • После этих действий на новой строке указывается ключевое слово exitwhen (в переводе с английского означает «выйти, когда») с хотя бы одним знаком пробела после него.
  • Сразу после ключевого слова exitwhen ставится условное выражение или значение типа boolean. Это и есть то условие, которое окончит цикл, если его результат будет значением true (эту строку иногда также называют точкой останова, но не всегда).
  • На строках ниже условного выражения описываются действия, которые ещё нужно совершить после проверки условия цикла до начала следующего витка. Эти действия могут не выполниться ни разу.
  • После указания всех нужных действий на новой строке укажите ключевое слово endloop. Оно будет означать окончание цикла.

В качестве факультативного материала приведу все остальные типы циклов, построенных на базе общего (чтобы Вы сразу узнавали тип цикла в коде JASS).

Вместо b подставляется условие цикла (данные типа boolean). Под переменной i подразумевается целочисленный итератор. Под переменной m — максимальное количество итераций.

» Безусловный цикл Выделить код
loop
    // Действия внутри такого цикла будут повторяться бесконечно.
endloop
» Цикл с предусловием Выделить код
loop
    exitwhen b
    // Эти действия могут не выполниться ни разу. 
endloop
» Цикл с постусловием Выделить код
loop
    // Эти действия выполнятся как минимум один раз.
    exitwhen b
endloop
» Цикл со счётчиком с шагом 1

Это тот самый цикл, который изначально реализован в GUI (вспомните действие For each (Integer A) do (Actions)). Теперь Вы будете знать, как он работает.

Реализация через предусловный цикл

Выделить код
loop
    exitwhen i > m
    // Эти действия могут не совершиться ни разу.
    set i = i + 1
endloop

Реализация через постусловный цикл

Выделить код
loop
    // Эти действия выполнятся как минимум один раз.
    exitwhen i == m
    set i = i + 1
endloop
» Цикл просмотра

Цикл просмотра переменной-массива arr

Выделить код
loop
    // Эти действия выполнятся как минимум один раз.
    // К элементу массива обращаться по индексу i, то есть arr[i].
    exitwhen i == 8190 // Максимальный индекс, конечно, может быть и меньше, но в данном случае мы смотрим весь массив вне зависимости от того, сохранены ли под его индексами значения.  
    set i = i + 1
endloop

Теперь Вы знаете, как работать с циклами.

Эта статья дала Вам всю необходимую базу для того, чтобы программировать на языке JASS.

Что дальше?

Улучшайте свои навыки. Читайте другие статьи, объясняющие, как работают функции ядра WarCraft III и как их правильно использовать. Благодаря той базе, которую Вы узнали здесь, Вы сможете легко понять тот код и те слова, которые там присутствуют.

Если у Вас есть претензии, предложения и дополнения для данной статьи, напишите их в комментариях. Помните: настоящий опыт и настоящие знания никогда не даются легко.

Используйте модуль вопросов и ответов — в этом нет ничего зазорного. Каждый ошибается и чему-то учится у других или у себя.

» Интересные факты о разработке статьи
  • На написание статьи ушло 7 дней, 9 чашек кофе, 2 чашки чая, 43 печеньки, 5 булочек, 1 рогалик и 14 прогулок на свежем воздухе.
  • Статья была написана на ноутбуке модели Samsung Q45, работающем на базе операционной системы Debian 8.
  • Статья (включая этот раздел) содержит 82 ссылки на Википедию, 10 ссылок на XGM и 6 ссылок на сторонние ресурсы. Таким образом, ссылочный объём статьи — 97 ссылок.
  • Статья изначально предназначалась для инновационного ресурса «Полезная Информация» (musitup.com), однако, так как открытие ресурса затянулось, была также опубликована на XGM в качестве ресурса-зеркала, потому что может быть полезна.
  • Во время написания статьи ни WarCraft III, ни какого-либо интерпретатора JASS под рукой не было. Вся информация получалась логическим путём при помощи перепроверки суждений в соседних статьях.
  • Статья использует около 80% возможностей разметки txt2, используемой в пределах XGM.
  • Для написания статьи использовался текстовый редактор Kate.
» Список изменений статьи

v1.01 от 26.06.2017

За критику, которая улучшила статью, огромное спасибо пользователям Clamp и DracoL1ch.
  • Переработаны разделы вступления и назначения статьи для достижения большей претенциозности.
  • Тщательно откорректирован ликбез об уровнях и типах языков программирования, в частности определения Си, транслятора, компилятора и интерпретатора. Также указано, что JASS — интерпретируемый язык программирования.
  • Абзац про Return Bug убран за ненадобностью.
  • В преимуществах JASS откорректирован текст, описывающий, почему высокий уровень языка — это преимущество.
  • Абзац о работе с памятью как недостатке языка убран.
  • Дано правильное пояснение про то, как trackable соотносится с интерфейсом игры.
  • Прямо определены родительские типы базовых типов JASS.
  • Убрана неуверенность в определении типов JASS как ссылок.
  • Введено понятие задания переменных в рамках понятия присваивания их значения, а также принципа его работы.
  • Введено понятие именования переменных.
  • Улучшено и облегчено для понимания определение обнуления переменных.
  • Переработано определение локальных переменных, убран прямой ввод понятия функции.
  • Переработано определение глобальных переменных, добавлено объяснение работы с ними.
  • Переработано описание массивов, выставлена строгая иерархия понятий.
  • Введено понятие размерности массивов, даны развёрнутые сопутствующие определения.
  • В практикуме по переменным пример с локальной переменной разбит на два — объявление и присвоение.
  • В практикум по переменным добавлены пояснения для объявления глобальных переменных.
  • Строковому типу добавлено пояснение о лимите в 1013 символов.
  • Улучшено определение скрытых функций, устранены разночтения.
  • Дано уточнение, что функция после возврата значения не останавливается, а прерывается.
  • Добавлен раздел «операции с типами».
  • Улучшено определение типа boolexpr в соответствии с найденным материалом.
v1.00 от 23.06.2017
  • Первая редакция статьи

Спасибо за внимание.
Всегда Ваш,

Орфографический тест

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

В этой статье рассказывается о проблемах с традиционным тестом на орфографию и о том, чем он отличается от LearnThatWord.

Проблемы с традиционным орфографическим тестом

Трудоемкая задача

Учителя младших классов тратят в среднем 2,5 часа в неделю на выполнение заданий, связанных с проверкой орфографии.Добавьте к этому время, которое учащиеся и их родители тратят на повторение слов дома: понятно, почему и учащиеся, и учитель быстро устают от этого процесса.

Отстающие ученики

Что еще хуже: Учащиеся, не достигшие целевого уровня обучения, часто не получают никакой пользы от упражнения.
Это потому, что традиционный процесс проверки правописания довольно статичен. Персонализация процесса или повторение слов в течение более длительного периода времени обычно ограничиваются размером класса и временем.

Если у учащихся отстают вербальные навыки, они могут освоить слова на пятничном тесте по орфографии с интенсивным изучением. Однако эти «набитые» слова часто забываются уже в следующий понедельник. (Моррис, Д., Блантон, Л., Блантон, В.Е., Новачек, Дж., и Перни, Дж. (1995). Обучение плохо успевающих орфографов на их «учебном уровне». Журнал начальной школы, 96, 163-177. .)

Орфографические тесты заставляют учащихся «втискивать» слова в кратковременную память. Таким образом, они могут получить хорошую оценку, но без фактического улучшения обучения. Автоматизм — это то, что превращает слова в активный словарный запас, и он не достигается таким путем.

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

Опытным ученикам становится скучно

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

Задания на орфографию вызывают напряжение у всех в классе. Они также потребляют время, которое было бы лучше потратить на творческие и социальные задачи обучения.

Чем отличается LearnThatWord

Новое изобретение проверки орфографии

LearnThatWord предназначен для объединения словарного запаса и практики правописания. Наше онлайн-обучение на 100% персонализировано в соответствии с потребностями каждого ученика, и мы просматриваем практические слова до тех пор, пока они не будут полностью изучены.

Тесты LearnThatWord поначалу могут показаться тестом на орфографию. Это потому, что мы всегда начинаем с проверки того, может ли ученик дать правильный ответ. Мы делаем это перед введением новых слов. Таким образом, мы оцениваем фактические знания, а не только кратковременную память.

Однако, в отличие от традиционных орфографических тестов, оценка не является предвзятой. Он используется исключительно для определения того, какие слова нуждаются в большей практике. Основная цель LearnThatWord — предоставить каждому учащемуся оптимальное количество отзывов для успешного обучения.

100% персонализированный

Результаты используются для индивидуальной адаптации практики и анализа.
Студенты, испытывающие затруднения, получают необходимое внимание. LearnThatWord помогает им общаться со своими одноклассниками в удобное время и не опасаясь смущения.
Продвинутые учащиеся могут выполнить задание за считанные минуты и перейти к более сложным словам.

Мгновенная, подробная обратная связь

Мгновенная обратная связь предупреждает учеников о предметах, которые они еще не знают.Сразу после отзыва тур Open Dictionary of English предлагает красочную информацию. Эта страница предлагает учащемуся написать слово еще раз для практики. Мультимедийные и традиционные словарные источники помогают сделать слово «прилипшим».

Обучение, выходящее за рамки пятничного теста

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

Наш адаптивный алгоритм делает наше обучение быстрым и целенаправленным. Долгосрочные результаты создаются за долю времени.

В вашем классе

Учителя экономят много времени, делегируя проверку правописания компании LearnThatWord. Они могут создать свои собственные списки слов или выбрать один из нашего большого архива списков слов. Слова отправляются в классы с помощью нескольких кликов.

Учителя могут создавать неограниченное количество классов и группировать учащихся по мере необходимости.

Студенты несут ответственность. Производительность хорошо видна как ученику, так и учителю. Учителя просто ставят цели на неделю (в идеале — ежедневные занятия, минимум три в неделю). Вместо того, чтобы использовать оценки на орфографическом тесте, теперь можно давать баллы за регулярное прохождение сеансов LearnThatWord.

LearnThatWord также помогает отстающим учащимся наверстать упущенное. Просто выберите более низкую оценку для этих учеников и поставьте цель «улучшить английский».» LearnThatWord проверяет наличие пробелов в словарном запасе каждого учащегося. Затем он автоматически продвигает каждого учащегося вперед, используя нашу запатентованную шкалу прогресса.

Продвинутые учащиеся могут бросить себе вызов, используя слова, которые соответствуют их интересам, например, выиграть экзамен по правописанию или подготовиться к SAT.

Вознаграждение за усилия, не существующий навык

Мы никогда не ставим оценки, не сравниваем и не делаем замечаний. LearnThatWord оценивает то, что требует дальнейшей практики, и уделяет этому особое внимание.
В том же духе все наши награды, дипломы и призы сосредоточены на усилиях, а не на имеющихся навыках.

Исследования показали, что это единственный способ повысить эффективность обучения с помощью вознаграждения.

Ваш ребенок или ученик с трудом пишет обычные слова?

С карточками See to Spell для чтения слов ваш ребенок или ученик сможет написать 129 распространенных, но сложных слов для зрения за меньшее время, с большим удовольствием и с лучшим долговременным запоминанием ~ по доступной цене.

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

Для родителей

Как родитель учащегося с проблемами правописания, разочарованы ли вы методами правописания и средствами обучения, которые помогают вашему учащемуся выучить слова с листа? Имеющиеся методы, как правило, отнимают много времени, неэффективны и скучны, что расстраивает любого родителя, который просто пытается помочь своему ребенку.

Как любящий родитель, вы беспокоитесь о том, сможет ли ваш ребенок преуспеть в школе и, помимо школы, в жизни. Но если вы не предпримете шаги, чтобы помочь ей добиться успеха в написании основных и общеупотребительных слов, ее будущее может столкнуться с ограниченными возможностями.Смогут ли они написать благодарственное письмо? Получить работу, которую они хотят? Чувствуете себя успешным в жизни? Или он может столкнуться с насмешками со стороны тех, кто не понимает его проблемы. Ваши опасения понятны.

Для преподавателей

Как преподаватель , обучающий учащихся с дислексией и другими нарушениями обучаемости, вы слишком заботитесь о темпах успеваемости своих учеников. Вы хотите сделать их путешествие как можно более позитивным, но существующие методы скучны, утомительны и не очень эффективны.Хотя вы хотите помочь этим трудным учащимся, у вас едва хватает времени, чтобы сосредоточиться на важной учебной программе, не говоря уже об их уникальных потребностях.

Но без действительно работающего метода вы можете усомниться в своих навыках или почувствовать, что подвели своих учеников, поскольку они отправляются в мир, не умея произносить общеизвестные слова. И зачем использовать скучный метод RED Letter, если вы можете предложить своим ученикам то, что им понравится!

Вот тут-то и пригодятся карточки See to Spell Sight Words.

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

«Левое полушарие» помогает обрабатывать язык, правописание и память, поэтому, когда эта область не работает оптимально, перевод данных из кратковременной в долговременную память становится практически невозможным. Уникальный и проверенный подход наших карточек See to Spell заключается в том, чтобы обойти проблемы обработки в левом полушарии и позволить словам найти свой путь в долговременную память другим путем.

See to Spell использует эффективные стратегии запоминания, основанные на исследованиях, чтобы слова с поля зрения запоминались надолго.

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

Дислектики и учащиеся с ограниченными возможностями обучения в большей степени зависят от правого полушария мозга, чем средний ученик.

  • Правое полушарие мозга помогает сохранять визуальные и фотографические воспоминания. See to Spell использует визуальные подсказки, такие как цвет и изображения, так что зрительные слова сохраняются в виде зрительной памяти в правом полушарии. Со временем слово и то, как оно пишется, переносится в долговременную память, и ребенок находится на пути к освоению зрительных слов.
  • Для студентов, которые находят традиционное обучение левого полушария изнурительным и неудовлетворительным, это большое открытие.Это означает, что чем больше правое полушарие вовлечено в процесс обучения, тем быстрее и легче оно будет учиться.

Карточки See to Spell работают с сильными сторонами правого полушария больше, чем традиционные методы обучения, и это делает запоминание быстрее и легче.

Вдохновленные исследованием, карточки See to Spell умело объединяют несколько важных элементов, которые играют на сильных сторонах учащихся с дислексией и другими трудностями — их правом полушарии.Каждая карточка имеет уникальное, красочное и привлекательное изображение, встроенное в всех типичных хитрых букв в слове. На карточках также есть полезные шаблоны букв, которые стратегически повторяются — например, маленькие девочки на буквах «А» и маленькие мальчики на буквах «О» — для облегчения запоминания. Дополнительное простое предложение на карточке помогает учащемуся установить связь и сохранить написание слова.

Меньше, чем стоимость ужина на двоих, вы можете получить прочный инструмент, который понравится всем!

Карточки See to Spell Sight Words могут помочь вам сэкономить время и деньги, поскольку вы помогаете своему ребенку или ученику обрести уверенность в себе, улучшить свои навыки и повысить его способность к обучению! Не менее важно: с ними легче работать, и они намного эффективнее всего, что вы пробовали раньше!

Слова вида See to Spell выбираются из списков высокочастотных слов Dolch and Fry.

Мы выбрали 129 самых распространенных сложных слов, которые большинство родителей хотят, чтобы их ребенок выучил и написал по буквам, не полагаясь на систему проверки орфографии. Слова были выбраны из списков высокочастотных слов Долча и Фрая, а также согласованы с уровнями 3, 4 и 5 программы чтения и правописания Бартона. У нас также есть планы добавить больше слов-прицелов в ближайшем будущем!

Мы собрали вместе все важные элементы, чтобы ускорить запоминание вашим ребенком слов, используемых для зрения.

  • Попробуйте без риска! Мы с гордостью предлагаем 30-дневную гарантию возврата денег без риска
  • Студенты любят их! Карточки веселые и творческие, поэтому учащиеся мотивированы проводить время, изучая слова с вида
  • Легче запомнить. Мы наносим красочные и запоминающиеся изображения на все типичные хитрые буквы
  • Очаровательный. Мы используем только нарисованные от руки полноцветные изображения, нарисованные профессиональным художником.
  • Уникальные изображения помогают в обучении. Каждое визуальное слово получает свое уникальное и привлекательное изображение, тесно связанное с формой буквы, помогая долговременной памяти.
  • Дополнительные крючки с эффектом памяти. Каждая карточка содержит интригующую, восхитительную мини-историю, которая действует как сильный триггер памяти и помогает закрепить запоминание правописания.
  • Экономит время. Практика всего от 5 до 15 минут в день даст результаты для большинства людей.
  • Легче увидеть. Легче запомнить. Больший, чем обычно, размер карточки (4 дюйма x 6 дюймов) обеспечивает больший холст для наших изображений и поддерживает зрительную память.
  • Создан на века. Изготовлен из прочного картона с закругленными углами и глянцевой поверхностью.
  • Помогает студентам всех типов. Карточки See to Spell помогают учащимся с дислексией, СДВ/СДВГ и другими нарушениями обучаемости, а также учащимся в спектре аутизма.
  • Для всех возрастов. Невероятный обучающий инструмент для детей от 5 до взрослых. Студентам нужно только освоить фонетику, прежде чем работать с нашими карточками.

Наша миссия состоит в том, чтобы помочь родителям и педагогам сократить период обучения и найти ресурсы и инструменты, необходимые им, чтобы помочь своим детям или учащимся с трудностями в обучении.

Шон Дениз Каннингхэм обнаружила, что вымотана и измотана трудной, дорогостоящей и трудоемкой работой по поиску методов обучения, которые действительно могли бы помочь ее дочери Кайли, страдающей дислексией и СДВГ, выучить слова с листа.Будучи преисполнены решимости раскрыть тайну, и после огромного количества исследований, проб и ошибок, они обнаружили элементы, которые действительно помогают таким ученикам, как Кайли, запоминать слова с листа. В восторге от созданной ими системы, они знали, что хотят поделиться результатами с другими в той же лодке и помочь облегчить путь любому, кто хочет выиграть битву за написание слов с листа.

Но более того, Шон и Кайли хотят предоставить золотую жилу учебных советов и ресурсов, которые помогут людям с трудностями в обучении достичь академического уровня, к которому они стремятся.

Наша миссия включает в себя возвращение

Мы также стремимся помогать тем, кто испытывает финансовые трудности. Мы часто жертвуем наборы семьям и специалистам тех, кто имеет право на помощь. Это один из способов, которым мы отдаем должное сообществу, частью которого мы являемся!

Подробнее отзывы

(Архив) Microsoft Office 2003: Работа с проверкой орфографии Mac

Эта статья основана на устаревшем программном обеспечении.

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

ПРИМЕЧАНИЕ. Грамматику можно проверять одновременно с правописанием. Информацию о проверке грамматики см. в разделе Работа с проверкой грамматики.

Активация автоматической проверки орфографии

По умолчанию Проверка орфографии автоматически включается при открытии Word. Проверка орфографии может быть отключена в настройках. Когда эта функция отключена, Проверка орфографии не будет проверять ваш документ во время ввода. Вы можете легко включить эту функцию через диалоговое окно Preferences . Вы также можете проверить орфографию документа после того, как закончите печатать.

  1. В меню Word выберите Настройки…
    Появится диалоговое окно Настройки .

  2. Из списка слева выберите Орфография и грамматика.

  3. В разделе Правописание выберите Проверять правописание при вводе.

  4. Щелкните OK .
    Слова с ошибками будут подчеркнуты красным.
    ПРИМЕЧАНИЕ. Эта функция отмечает орфографические ошибки; это их не исправляет.

Изменение текста в словаре

Изменение текста в словаре может быть полезным, чтобы термины и имена, которые Проверка орфографии не распознает, не помечались как написанные с ошибками. Чтобы удалить или добавить текст из словаря, необходимо сначала открыть словарь из диалогового окна Custom Dictionary . Удаление или добавление текста из словаря удобно и просто. Вы можете сохранить изменения, чтобы закрыть Word и вернуться позже, используя внесенные изменения.

ПРИМЕЧАНИЕ. При изменении словаря проверка орфографии при вводе отключается. Если вы используете автоматическую проверку орфографии, вам нужно будет снова включить ее после изменения словаря.

  1. В меню Word выберите Настройки…
    Появится диалоговое окно Настройки .

  2. Из списка слева выберите Орфография и грамматика.

  3. В разделе Правописание нажмите Словари…
    Появится диалоговое окно Пользовательские словари .

  4. Из списка прокрутки Пользовательские словари выберите словарь, который вы хотите изменить.
    ПРИМЕЧАНИЕ. Рядом с выбранным словарем установлен флажок.

  5. Щелкните Изменить.
    Откроется окно Пользовательский словарь .
    СОВЕТ. Если появится диалоговое окно подтверждения, нажмите Да.

  6. Чтобы добавить слова в словарь,
    1. Введите запись, которую хотите добавить в словарь.
    2. Нажмите [возврат].

  7. Чтобы удалить слова из словаря,
    1. Выберите слова, которые вы хотите удалить.
    2. Щелкните Удалить.

  8. Щелкните Сохранить.
    СОВЕТ. Если появится диалоговое окно подтверждения, нажмите Да .

  9. Закройте окно Пользовательский словарь .

  10. (Необязательно) Повторно активировать автоматическую проверку орфографии.

Исправление ошибок в тексте

Если словарь распознает слово с ошибкой, он подчеркнет это слово красной волнистой линией. Word позволяет исправлять текст с ошибками через меню Quick или через диалоговое окно. Для слов, которые часто написаны с ошибками или опечатками, вы можете использовать автозамену, чтобы автоматически исправлять ошибки по мере их ввода.

ПРИМЕЧАНИЕ. Информацию об исправлении грамматики см. в разделе Работа с проверкой грамматики.

Исправление орфографической ошибки в тексте: параметр быстрого меню

Использование меню Quick для изменения текста с ошибками очень простое и позволяет быстро исправить слова с ошибками.

  1. Нажмите [control] и щелкните слово с ошибкой » выберите соответствующий пункт меню Quick ..

    Опция быстрого меню

    Действие

    Варианты написания (напр.g., UWEC, Use, Owe, Ewe, Awe) Предлагает варианты слов в качестве вариантов правописания для исправления слова с ошибкой.
    Игнорировать все Указывает Проверка орфографии игнорировать это слово и все остальные вхождения этого слова.
    Добавить Добавляет слово в словарь.
    Автозамена Отображает подменю, в котором можно выбрать слова для установки автоматического исправления слова с ошибкой.
    Правописание… Открывает диалоговое окно Правописание , в котором можно внести изменения в слово с ошибкой

Исправление опечатки в тексте: параметр диалогового окна

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

  1. В меню Инструменты выберите Орфография и грамматика…
    ИЛИ

    Нажмите Орфография и грамматика.
    ИЛИ
    Нажмите [F7].
    Появится диалоговое окно Правописание и грамматика .

  2. Сделайте нужный выбор.
    ПРИМЕЧАНИЕ. Параметры диалогового окна включают все параметры быстрого меню, а также параметры, описанные в следующей таблице.

    Параметр диалогового окна

    Действие

    Смена Заменяет слово на выбранное предложение.
    Заменить все Заменяет все идентичные орфографические ошибки на выбранное предложение.
    Автозамена Изменяет слово в текущем документе и продолжает вносить исправления в последующие документы по мере их ввода.
  3. По окончании проверки в появившемся диалоговом окне нажмите OK.

Руководство по выбору стиля: Орфография | ACRL Choice

ПРАВОПИСАНИЕ, ОТЛИЧИТЕЛЬНОЕ ОБРАЩЕНИЕ СЛОВ И СЛОЖНЫХ СЛОВ (Чикаго, гл.

7)

 

ЭТАЛОННЫЕ ИСТОЧНИКИ

Проконсультируйтесь с Merriam Webster Unabridged ( http://unabridged.merriam-webster.com/) для правильного и предпочтительного написания. Используйте основную статью словаря, а не вариант, для слов с альтернативным написанием. Предпочтительные варианты написания некоторых слов, обычно используемых в Choice, включают следующее:

сокращение
признание
допустимый
советник
эстетический
среди
приложений
археология
каталог(и)
каталог(издания)
каталогизация
незаменимый
суждение
знающий


Некоторые общие указания:
* Используйте «-ward», а не «-wards» для таких слов, как «назад», «вперед», «к».
* Вариантами считаются предлоги, оканчивающиеся на «-st». Используйте стандартную форму (например, среди, не среди).
* Когда «-ment» добавляется для образования существительного от глагола, отбрасывайте конечную букву «e» в форме глагола (например, сокращать> сокращать, подтверждать> подтверждение; судить> суждение).

НОВЫЕ СЛОВА

Три основных класса новых слов: иностранных слов , слова, образующие словарей новых дисциплин , и чеканных монет .

Новые слова, т. е. слова, не перечисленные в Webster’s Unabridged , будут разрешены, если они появляются в других авторитетных словарях. Если слово не может быть найдено ни в одном из них, следует проконсультироваться с рецензентом, использующим его. По пояснению рецензента редактор может оставить слово стоять, заключить его в кавычки или использовать замещающее выражение.

Термины, которые могли быть придуманы рецензентом или автором рецензируемой книги, должны быть заключены в кавычки.Если иностранные слова можно найти в другом авторитетном словаре, они будут рассматриваться так, как если бы они были найдены в Webster’s Unabridged , т. е. выделены прямым шрифтом, а не курсивом.

Рецензенты иногда заключают в кавычки слова/термины, которые они могут посчитать сленговыми, иностранными, возможно, слишком новыми, чтобы быть действительными и т.  д. Часто эти слова находятся в Merriam Webster . Некоторые общие примеры:

старый режим
бэби-бум / бэби-бумер
свершившийся факт
Festschrift
Generation X / Xer
инструкции (прил., как в «… это практическое руководство для …)
intifada
mestizo
must (прил., как в «Эту книгу необходимо прочитать»)
ukiyo-e

Множественное число

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

Владыки

Добавьте апостроф +s к словам и именам, оканчивающимся на непроизносимую «s» (например, Descartes’s, Camus’s), и к правильным классическим именам, оканчивающимся на звук «eez» (например,г., Еврипеда, Ганга).


СОЕДИНЕНИЯ И ПЕРЕНОС

Составные слова, содержащие префикс или суффикс , обычно рассматриваются как одно слово.


антирабовладельческий
предрассветный
звездный (но похожий на шар)
десятикратный
восстановить, подтвердить
несущественный


Если корень является именем собственным, числом или составным словом, или если получается неверный омоним, расставьте перенос.


неамериканский
до 1945 года
перекрыть (снова перекрыть)
воссоздать (снова создать)
гитлеровский
досократический
афро-азиатский


Некоторые часто используемые исключения:
трансатлантический
Неоплатонический

Составные слова из двух слов ( открытые соединения ) представляют собой сочетания, выражающие отдельные понятия; обычно это существительные, но они также могут использоваться как прилагательные или глаголы.Обычно такие прилагательные из двух слов остаются открытыми. Ставьте перенос только в том случае, если комбинация может быть неоднозначной.


лидер движения за гражданские права
сделка с недвижимостью
учитель средней школы
реформа здравоохранения
учебная программа по общественным наукам
первокурсник английского языка

Составные слова , написанные через дефис, могут быть существительными, прилагательными или глаголами, но чаще всего используются прилагательные. Следующие правила применяются к предшествующим прилагательным; сказуемые прилагательные обычно не пишутся через дефис, за исключением отмеченных случаев.

Что писать через дефис

Сочетание прилагательного или существительного с причастием прошедшего времени.

 

яркое знамя
пропитанная водой земля
звездные влюбленные


Сочетание существительного и причастия настоящего времени.

орган, принимающий решения
потрясающее событие


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

Забег на 1500 миль
Четырехминутное яйцо
18-летний сын


Составные слова, начинающиеся с «квази», «крест», «я», «все», независимо от того, являются ли они предшествующими или предикатными прилагательными.


квазисудебное решение
самодовольное
всеохватывающее
межкультурное
уверенность в своих силах
исключение: перекрестное течение


Составные слова, начинающиеся со слов well, ill, better, best и т. п., если только они не используются в качестве сказуемых прилагательных.


известная писательница
очень известная писательница
она хорошо известна

Два существительных одинакового значения, используемые как составное существительное.


солдат-государственный деятель
автор-критик
медсестра-практик

Отношения, усугубленные двоюродным братом и свекровью


прадедушка
невестка
тесть (мн.)

Специальные фразы по словарю или здравому смыслу.


Джонни-приходи-поздно
посредник


Если составному слову предшествует прилагательное, изменяющее первое слово в составном слове, опустите дефис или, если это необходимо для ясности, используйте два дефиса.

поэт начала XIX века

Что не переносить через дефис

Наречия, оканчивающиеся на «-ly», изменяющие прилагательное.


резко написанный отчет
этот подробно документированный отчет
плохо организованный указатель
освежающе откровенная биография


Термины, используемые со знаком процента или знаком доллара, поскольку они не являются прилагательными (например,г. , 15 процентов чаевых, дефицит в размере 100 миллионов долларов).

Названия химических веществ, используемые в качестве прилагательных, если только химики не ставят их через дефис как существительные (например, отравление угарным газом).

Иностранные фразы по любой причине, если они не содержат дефисы в прямой цитате (например, априорное решение).

Общие соединения


последействие
универсальный
звездный (все формы)
произведение искусства
авангард (все формы)
бэккантри
голые кости (существительное)
голые кости (прил.)
фронт
бестселлер
бестселлер
орнитолог
с высоты птичьего полета
пение птиц
горько-сладкий
черный список (сущ. и гл.) )
Кормление грудью


Hairtinging
Businessike
BusinessПерсон
Byctup
Bypass
By-Product
Автомобильный бассейн (существительное)
Carpool (глагол)
CAREGIVER
CATEBOOK
CASE
Caseload
Catework

крылатая фраза
наверстать упущенное
прекращение огня
деторождение (прил. и сущ.)
битком набитый
город-государство
общегородской
чистый (все виды использования)
ясноголовый
кофейный столик (прил.)
журнальный столик (существительное)
хладнокровный
колония
колониальный (re: 13) Британские колонии в Америке)
дальтоник
дальтоник
обыденность (все формы)
здравый смысл (прил.)
здравый смысл (существительное)
копирайтер (существительное)
копирайтинг/инг (глагол)
копирайтер
затраты-выгода ( прил.)
экономичный
экономичный
контрреволюционный
кантри-и-западный (прил.)
кантри и вестерн (существительное)
курсовая работа
сокрытие (существительное)
кредитоспособный
crisscross
crossroad
cross section
cross talk
crossover
кристально чистый
cut off (глагол)
cutoff (прил. и сущ.)
головорез
передний край (существительное)
передовой край (прил.)
база данных
набор данных
тупик (прил. )
принятие решений (прил. и сущ.)
тупик (существительное)
принятие решений (прил. и сущ.)
глубоко укоренившийся
глубоко укоренившийся
настольный (прил.и сущ.)
несгибаемый (прил.)
несгибаемый (существительное)
 докер
двусмысленный
 спуск
приземленный
отсев (глагол)
отсев (существительное)
беззаботный
 концевые примечания 5 беспристрастный
поиск фактов
поиск фактов (прил. или существительное)
малодушный
справедливый
далеко идущий
надуманный
далекий
далеко идущий
дальновидный
быстрый вперед
слабоумный
полевая работа полевой работник
кинозритель
кинорежиссер
тонкая настройка (v.)
первоклассный (прил. и нареч.)
из первых рук
первоклассный
пойма
блок-схема
народная песня
 народная жизнь
 folksinger
 народная сказка fortepiano
framework
freeborn
freelance (открыт только для «солдат-наемников»)
free-range
free-ranged
freewheeling
freestanding
front line (существительное)
frontline (прил. )
полномасштабный
полноценный
полный -масштаб
сбор средств
сбор средств (существительное и прил.)
низовой (прил.)
низовой (существительное)
новаторский
грунтовые воды
взрослый (прил. и существительное)
половинчатый
портативный
ручной
практический
крутой
жесткий
твердый

твердый переплет 90 твердый (прил.)
жесткий лайнер (существительное)
упрямый
упорный
трудолюбивый
лоб в лоб (все формы)
деспотичный
высоколобый
своевольный
высокая точка
хит-
тыл
горячая линия
уборка
промежуточный (прил.или существительное)
промежуточный (нареч. или подготов.)
междоусобица
на службе
башня из слоновой кости (прил.)
башня из слоновой кости (существительное)
прыжок-старт (глагол)
прыжок-старт (существительное)
добрый
laissez -faire
рельеф
землевладелец (все формы)
землевладелец
стартовая площадка
левша (прил. )
левокрыл (прил.)
левокрыл (существительное)
левокрыл (существительное)
уравновешенный
форма жизни
Life-Size
Life Spant
LifeLike
LifeLong
Lifestyle
LifeTime
Lifeway
Life Watework
Lighthearted
LifeLong
And And Undere
Longtime
Давние
Длинные
Leadbrow
Длинные
Lowbrow
Lowsaine

макияж
картограф
масс-маркет
генплан
шедевр
шедевр
подлый
телепат
склад ума
кинозритель
кинорежиссер
клеветник
мифотворец 5-5 государство 15 15 узколобый
обзывание 900 Nationwide
Newsworthy
Тем не менее
No-Nonsense
Offbeat
Offhand
Office Offbeat
Offushage
Старомодный
односторонний
Regeing
на сцене
OneTime
Open-Funded
Open-Andress
Onlyworldly
в целом (все использует)
тернер
первопроходец
миротворец
миротворец
мирное время
фоторепортаж
заполнитель
топоним
зритель (инг)
драматургия
сюжетные линии
политический деятель
открытка
постмортем
прайм-тайм 9015 пра-сократика прил. )
гравер
эстамп
призер
корректор
корректор
изюминка
радиоизотоп
реальная жизнь
арьергард (прил.)
арьергард (существительное)
Red-baiting
срывать (глагол)
грабить ролевая игра
круглый стол
сценарист
сценарист
второй лучший (прил.)
второй лучший (существительное)
продать (глагол)
продать (существительное)
настроить (глагол)
настроить (существительное)
сократить путь
обсчитать
недолговечный
дефицит
краткосрочный (существительное)
краткосрочный (прил.)
недальновидный
боковая панель
интермедия
шаг в сторону (существительное)
шаг в сторону (глагол)
одноручный
целеустремленный
рабовладелец
так называемый
мягкая педаль
твердотельный
сборник песен5 spinoff15 spatio
исходник
(существительное)
выборочная проверка
рабочий сцены
резервный
автономный
выдающийся (существительное)
стоячий (прил. )
запуск (все виды использования)
по всему штату
сталелитейщик
отчим
ступенька
натюрморт ( пл., lifes)
Stonecutter
Line Line
Destradoboard
Researteller
Простое
Listbreaking
SUREFooted
Наверняка
Takefood-All
Treature Pickeier
Tookgoing
Озвучивая
Потребляющаяся время
Временная рама
Временная линия (Исторические события)
, расписание)
шкала времени
промежуток времени
первоклассный
первоклассный
компромисс
первопроходец
трансатлантический
линия деревьев
поворот (существительное)
современный
верхний регистр
удобный
пробуждение (прил.)
теплокровный
разминка (существительное)
разминка (глагол)
военное время
акварель
сайт
будни
благополучие
известный
состоятельный
начитанный
всесторонне развитый
осведомитель
белый воротничок (прил. )
искренний/лай
широкомасштабный
охота на ведьм (существительное)
охотник на ведьм/инг
работа по дереву
игра слов
рабочая тетрадь
рабочая сила
рабочая сила
рабочее место
рабочая станция
мировоззрение существительное)
рецензия (существительное)
заблуждающийся
зигзаг
база данных
электронная почта
домашняя страница
горячая ссылка (сущ.)
горячая ссылка (v.)
группы новостей
новостные ссылки
онлайн
панель инструментов
Веб-мастер
веб-сайт
по всему миру
актуальная (прил.)
актуальная (прил.)

СОДЕРЖАНИЕ

сколько времени я должен потратить? (+ пример урока)

Если вам интересно, сколько времени вы должны потратить на уроки правописания, вы не одиноки! Это один из наиболее часто задаваемых вопросов о программе «Все о правописании ».

К счастью, есть очень простой ответ, который работает в большинстве ситуаций.

Сколько времени я должен потратить?

Обычно я рекомендую уделять 20 минут в день пять дней в неделю урокам правописания.

Конечно, эта общая рекомендация может не совсем соответствовать ситуации в вашей семье. Возможно, вам придется настроить продолжительность уроков в соответствии с конкретными потребностями вашего ребенка.

Но самое замечательное в Все о правописании — его легко настроить.Вот еще несколько вещей, о которых стоит подумать, планируя свой день:

  1. Учитывайте возраст и концентрацию внимания вашего ребенка. Если ваш ребенок маленький, ему трудно усидеть на месте или он только начинает писать, вы можете начать с десяти минут в день. Вы можете постепенно увеличивать время по мере того, как ваш ребенок взрослеет и его концентрация внимания увеличивается.
  2. Короткие уроки каждый день более эффективны, чем более длительные и менее частые уроки. На коротком уроке внимание вашего ребенка будет меньше отвлекаться, и вы обнаружите, что можете добиться большего, когда ваш ученик активно участвует в уроке. Держите уроки в приподнятом и быстром темпе, чтобы поддерживать интерес ребенка. Даже если вы работаете с ребенком старшего возраста, который может концентрироваться в течение более длительного периода времени, 20 минут — это все, что вам нужно, чтобы просмотреть старый материал, обучить новой концепции и написать несколько предложений под диктовку. Учащиеся могут одновременно усваивать только ограниченное количество новой информации, а остальное не запоминается.

    Иногда мы слышим от мам, чьи дети отказываются от уроков орфографии, только для того, чтобы узнать, что мама пытается провести несколько уроков за один присест или тратит час на дополнительные уроки, чтобы «наверстать упущенное».«Даже если они были столь же эффективны, как короткие уроки, длинные уроки заставляют правописание казаться тяжелой работой. Насколько это возможно, мы хотим, чтобы уроки были легкими и веселыми.

  3. Помните, что вам не нужно проходить весь Шаг за день. Фактически, иногда ученику требуется целая неделя, чтобы завершить Шаг. Скорость, с которой ваш ребенок осваивает Шаг, зависит от возраста ученика, концентрации внимания, предшествующего опыта и изучаемых концепций. Программа «Все о правописании » является полностью гибкой и настраиваемой, поэтому вы можете быстро пройти через разделы, которые несложны для вашего ученика, и потратить больше времени на сложные концепции.

    Если вы новичок в Все о правописании и вам интересно, что такое «шаг», загрузите этот бесплатный образец урока из уровня 2, шага 16. Каждый шаг учит одному новому понятию, и на этом этапе учащиеся изучают слова с помощью звук /ar/ как в ферме.

    В каждом Шаге есть три основных раздела: Обзор, Новое Обучение и Закрепление. Если вы не можете пройти весь Шаг за день, просто отметьте страницу, чтобы занять свое место. На следующий день начните с быстрого просмотра карточек (карточек с фонограммами, звуковых карточек, карточек-ключей и карточек со словами), а затем продолжите с того места, на котором остановились в предыдущий день.

  4. Используйте таймер. После того, как вы определили наилучшую продолжительность для вашей ситуации, установите таймер в начале урока. Это поможет вам не сбиться с курса и не затянуть урок. Ваш ребенок будет поощряться к тому, чтобы оставаться сосредоточенным, потому что он знает, что урок закончится, и у вас не будет соблазна продолжать откладывать время, о котором вы договорились.

Итог

Самое важное, что нужно помнить при планировании уроков правописания, — это сделать их «краткими, приятными и последовательными».«Мозг вашего ребенка похож на мышцу, и постоянные упражнения делают для развития мышц гораздо больше, чем случайные большие выбросы энергии. А более короткие уроки заставляют вашего ребенка возвращаться снова и снова!

Короткие и эффективные уроки — это лишь один из способов облегчить правописание! Загрузите мою бесплатную электронную книгу «Шесть способов упростить правописание», чтобы узнать о шести мощных функциях «Все о правописании», которые произведут революцию в вашем обучении!

Фото: Джейми из «Невероятной домашней школы» и Мишель из «Восхитительного обучения

».

БЕСПЛАТНЫХ упражнений по правописанию без подготовки — Mrs.Зимнее блаженство

Грамотная практика правописания очень важна для учащихся, но ее планирование и подготовка могут занять много времени! Чтобы помочь вам, я делюсь 12 БЕСПЛАТНЫМИ, БЕЗ ПОДГОТОВКИ, печатными и цифровыми заданиями по правописанию для учащихся K-2. Подпишитесь на мои еженедельные электронные письма, и вы будете получать бесплатные письма прямо на свой почтовый ящик!

Как учитель я знаю, что ваш список дел никогда не заканчивается и часто растет! Со всем, что вам нужно делать со своими учениками каждый день, можете ли вы выделить время для обучения правописанию и практики? Не всегда легко найти время, но это ОЧЕНЬ важно.

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

Я искренне верю в важность строгого обучения правописанию, но я также знаю, как много времени уходит на создание и подготовку упражнений по правописанию КАЖДУЮ ЕДИНСТВЕННУЮ НЕДЕЛЮ!! Я понимаю, что вы не можете тратить часы на подготовку и персонализацию еженедельных фонетических занятий, поэтому я пошел дальше и сделал это за вас!

Сегодня я рада поделиться с вами своими БЕСПЛАТНЫМИ упражнениями по правописанию БЕЗ ПОДГОТОВКИ! Это абсолютно бесплатный ресурс, который обеспечивает содержательную практику и повторение, необходимое учащимся для овладения правописанием или визуальными словами.

Я создал эти задания по правописанию как редактируемый документ с «автозаполнением». Это означает, что ЕДИНСТВЕННОЕ, что вам нужно сделать, это вставить слова для правописания (до 12) в список слов для правописания. Вот и все!! Как только вы введете свои слова в список слов, вы просто распечатаете страницы, которые хотите использовать.

Ресурс включает 12 различных РЕДАКТИРУЕМЫХ орфографических печатных форм! С таким количеством занятий вы можете легко смешивать вещи, чтобы они оставались свежими и привлекательными для учащихся.Им очень понравится разнообразие.

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

БЕСПЛАТНЫЙ ресурс включает ВСЕ следующие действия: 

💗 Проследите и напишите правописание

💗 Заказ Азбуки

💗 Орфография iPad

💗 Правописание гласных согласных

💗 Орфография жестового языка

💗 Радуга Правописание

💗 Написание треугольника

💗 Орфографические иллюстрации

💗 Поиск слова

💗 Правописание форм слов

💗 Правописание Roll-a-Color

💗 Заклинай и двигайся

Я не буду вдаваться в подробности о КАЖДОМ занятии, включенном в ресурс, но я хочу выделить несколько моих любимых и немного рассказать вам, почему я их люблю!

Написание гласных согласных

Мне нравится это задание, потому что оно скрытное… скрытое в том смысле, что ученики не смогут реализовать всю практику, которую они получают, на одной странице! Конечно, они тренируются в написании орфографических слов, но они также работают над определением гласных и согласных, а также замечают образцы и правила правописания. Цветовое кодирование, которое они должны делать, действительно помогает узорам выделяться и становиться более заметными для учащихся.

Орфография жестового языка

Мне нравится этот рабочий лист по правописанию языка жестов, потому что он полностью увлекает учащихся! Они интересуются американским языком жестов (ASL) и очень рады, когда могут произносить свои слова на ASL. Это особенно эффективно для ваших кинестетиков. И, конечно же, довольно круто, что они попутно немного изучают язык жестов!

Иллюстрации правописания

Знаете ли вы, когда ученики что-то рисуют, они обрабатывают это визуально, кинестетически и семантически? Поэтому, когда вы назначаете иллюстрации для печати правописания, вы можете знать, что они на самом деле тренируются тремя разными способами! Конечно, они будут думать, что у них есть время раскрашивать и рисовать! Приятно видеть творческие (и часто веселые) иллюстрации, которые они придумывают для своих слов!

Поиск по слову

Дети любят все аспекты этой распечатки! Они настолько мотивированы, чтобы создавать дополнительные сложные поиски слов по правописанию в надежде поставить в тупик своих одноклассников (или учителей!). И, конечно же, они полны решимости решать поисковые запросы своих одноклассников! Создавая и решая, они тренируются в правописании, даже не подозревая об этом! Они просто думают, что просто развлекаются!

Заклинание и движение

Я всегда ищу новые способы поднять детей и заставить их двигаться в течение дня. Им это НУЖНО, и они ЛЮБЯТ это!! Так почему бы не добавить движения в их орфографическую практику? «Заклинание и движение» — отличное занятие, которое заставляет учащихся думать о гласных и гласных звуках, двигая телом и получая энергию из своих систем!!

Оставьте свое имя и адрес электронной почты ниже, и я отправлю эти бесплатные упражнения по правописанию на ваш почтовый ящик прямо сейчас!

.

Наконец, вы обучаете студентов дистанционно?? Вам нужен этот ресурс в цифровом виде?? Если да, то я вас тоже прикрыл! Это видео научит вас создавать ЦИФРОВЫХ ЗАДАНИЙ НА ПРАВОПИСАНИЕ и делиться ими со своими учениками!

Я надеюсь, что эти бесплатные, не требующие предварительной подготовки упражнения по правописанию, которыми я поделился сегодня, сэкономят ваше время и помогут привнести в ваш класс более содержательную практику правописания!

– ПИН-код для ПОСЛЕ –

Почему даже плохие орфографы любят орфографическую пчелу

Я всегда был а-т-р-о-к-и-о-у-с орфографом.

Таким образом, получасовая поездка в начальную школу, когда мой отец держал в одной руке презираемый, заляпанный кофе листок бумаги с 10 словами, которые я должен был выучить за эту неделю, был одним из моих самых жалких детских ритуалов. « Смущение », — подсказывал он. «Я почувствовал смущение , когда наша собака залаяла на соседей».

» Э-м-б-а-р-е-с-м-е-н-т? »

Вздох. «Мы внесем это в список «продолжать работать».

В отличие от большинства студентов, я боялся пятниц, потому что у нас были еженедельные контрольные.Мой учитель часто ругал меня за то, что я пропускал три или более слов в списке к тому времени, когда испытание заканчивалось. «Я» перед «Е», кроме как после «С», — терпеливо повторяли мне снова и снова. «Если гласная произносит свое имя, в конце будет немая буква «Е».

А потом все начнется снова в следующий понедельник.

Ирония судьбы заключалась в том, что, как бы ни был я плох в правописании, моими любимыми предметами были чтение и письмо. В дошкольном возрасте мой учитель сказал моим родителям поощрять меня писать «для удовольствия» и воздерживаться от исправления написания слов.«Пусть она все выдумает», — настаивала миссис Ральф, ведя к огромным бумажным томам, заполненным сложными вселенными произнесенных слов, которые были совершенно непонятны никому, кто пытался их прочитать, кроме меня.

Миссис Ральф, как оказалось, опередила свое время. В наши дни многие студенты не обременены карточками, списками словарного запаса и ужасными викторинами по пятницам после обеда. «Правописание как отдельная тема практически исчезла», — пишет The Philadelphia Tribune .«Некоторые учителя тратят время на обучение правописанию, а другие нет. Там, где акцент делается на правописании, это является компонентом программ чтения или других предметов языкового искусства. Многие школьные округа считают, что учащиеся учатся правописанию посредством ежедневного чтения и письма».

Тем не менее правописание важно как никогда. Хотя изобретение компьютеров и автозамены может сделать менее необходимым знание правильной последовательности букв, лингвисты предупреждают, что это не так.

«Люди не учатся писать по буквам с помощью автозамены, и это не поможет вам, когда у вас есть два варианта написания, омофон, например, нужно и месить , или грамматические проблемы, такие как это и это с апостроф», — сказал USA Today Джеффри Нанберг, лингвист из школы информации Калифорнийского университета в Беркли.

В качестве доказательства достаточно взглянуть на наше собственное правительство, где можно найти изобилующие опечатками твиты и официальные документы, изобилующие орфографическими ошибками, такими как «злоумышленники».

Без шуток: приобретаемая копия инаугурационной печати Трампа прямо с сайта Библиотеки Конгресса. Пятиклассник бы заметил эту опечатку. pic.twitter.com/zomWsMojYV

— Джулс Уиннфилд (@paulm4749) 12 февраля 2017 г.

Честно говоря, английский смехотворно сложно выучить. Почему не «адвокат» пишется как «советник», в конце концов?

По сравнению со студентами, изучающими европейские языки, которым требуется год или меньше, чтобы овладеть основами чтения и письма, англоязычным студентам обычно требуется не менее трех лет, чтобы овладеть основами грамотности, исследования нашел.«Не существует систематического способа научиться читать или писать на современном английском языке — люди должны запоминать написание тысяч отдельных слов, хранить их в своих мысленных базах данных и извлекать их при необходимости», — объясняет The Atlantic . «Небольшой процент людей преуспевает в этом навыке, но для большинства детей в англоязычных странах обучение чтению и письму на родном языке является трудоемким и трудоемким занятием».

Все это подводит меня к экзамену по правописанию.Я люблю, люблю, люблю орфографическую пчелу. Действительно, а кто нет?

Пчелы по правописанию — чисто американская традиция. Несмотря на то, что традиция учить перед одноклассниками правильность написания « не мог » и « моряк » исчезает из учебных программ, ежегодная Национальная орфографическая пчела Скриппса восходит к временам, когда была определенная слава. правильно произносить « гладиолусов » перед толпой (это было победное слово для Фрэнка Нойхаузера, который стал первым чемпионом Скриппса в возрасте 11 лет в 1925 году).

«Это слова, которых никто не знает», — объяснил Нанберг, лингвист, который говорил с USA Today . «Это слова, которые многие люди никогда в жизни не видели, и их не нужно произносить по буквам».

И тем не менее, каждый год я приклеен к ESPN, когда писатели размером с пинту выбивают «Ouagadougou», «thonnier» и «dehnstufe», как будто они «c-o-r-r-e-c-t» или «p-l-e-a-s-e». В этом году в конкурсе примет участие самый молодой участник — 5-летний ребенок из Талсы, который прошел квалификацию, написав такие слова, как «севруга», «нисей», «виргуле» и «алим».

Возможно, именно этот фактор взгляда вызвал критику Национальной орфографической пчелы Скриппса за то, что она является чем-то вроде «шоу уродов», а Самир Пандья написал для The Atlantic , что «особая жестокость орфографической пчелы заключалась в том, чтобы берем детей в самые неуклюжие подростковые годы, а затем транслируем их по национальному телевидению для нашего удовольствия». это удовольствие от усиления эмоций, которые нас учили подавлять во взрослой жизни.Когда Нихар Сайредди Джанга, например, в прошлом году издевательски аплодировал своему противнику после того, как тот не смог правильно произнести слово, мы осознаем свои собственные невысказанные побуждения, время от времени показывая язык побежденному сопернику и идя на чище, чище, чище. !

Что касается меня, то, несмотря на то, что я зарабатывал на жизнь профессиональным писателем, я так и не стал лучше писать. Я до сих пор трачу e-m-b-a-r-r-a-s-s-i-n-g количество времени, пытаясь найти, куда идут I и E одним словом.И когда я смотрю Национальную орфографическую пчелу Скриппса, я до сих пор чувствую пагубное возбуждение от тех пятничных дневных викторин по правописанию, которые преследовали меня в начальной школе.

Но как бы меня ни тошнило от этих воспоминаний, я также совершенно очарован. Доктор Жак Байи, который уже более десяти лет является официальным комментатором конкурса орфографии, попал прямо в точку, когда сказал: «Вы болеете за всех». Конечно, у вас могут быть свои фавориты, когда начинается соревнование (поехали, Эдит!), но когда каждый крошечный, отдельный участник подходит к микрофону, чтобы сказать свое слово, это такой же напряженный момент, как бросок по воротам в овертайме или бросок с базы. -загружены летучими мышами в дополнительных иннингах.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *