Программирование. Азы. Урок 2

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


В двухмерном пространстве у объектов есть две координаты “х” и “у”. Функция должна принимать два числа (говорят: функция должна принимать два параметра): первое число пусть будет “х”, в второе число тогда будет “у”. Чтобы написать функцию в начале необходимо использовать ключевое слово “function”, а после этого придумать имя для функции, после этого в круглых скобках указать все параметры, которые нужно передать в функцию.

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


Блок кода - это весь код, который помещается между фигурными скобками: {}. При программировании, если стоить какая-либо задача перед программист и он пишет для этого функцию, то выполнение этой задачи как раз и помещается в такой блок кода. Задача: изменить позицию картинки на экране. Заголовок функции описан, следующий шаг написать код, который это сделает.


Созданная функция принимает два параметра: newX и newY. Внутри блока кода, с этими параметрами нужно работать как с обычными переменными, только нужно учесть, что вне данного блока кода, эти переменные не видны и если к ним обратиться, то будет ошибка. Выше было описано, как изменить одну из координат картинки в консоли. По аналогии меняем позицию по “х” и “у” используя новые переменные: test.x = newX; Для картинки, за которую отвечает глобальная переменная test изменяется координата “х” используя символ присвоения “=”, а новое значение будет браться с переменной “newX”. После каждого действия необходимо ставить “;”.


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

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

То что написано в консоли - называется вызов функции. При вызове функции выполняется блок кода, который был создан для данной функции. Для примера, если вызвать функцию следующим образом: newPosition(45, 200) то проследим как отработает код. Когда пользователь нажал “enter”, браузер начинает выполнять код функции переходя на 17 строчку (потому что это первая строчка в блоке кода функции). Перед выполнением этой строки в переменные newX и newY помещаются значения, которые мы указали в виде цифр. Так, newX станет равен 45, а newY будет равен 200. Получается браузер при вызове функции будет выполнять код примерно так:

в параметры функции подставит те значения которые быле переданы (45 и 200);

для картинки изменит положение “х” на newX (которое будет равно 45);

для картинки изменит положение “у” на newY (которое будет равно 200);

закончит выполнение функции.


Поэкспериментировав с функцией “newPosition” и изменяя положение картинки на экране, попробуйте написать две функции: первая меняла бы положение только по “х”, а вторая функция меняла бы положение только по “у”.

P.S. Используйте тэг jlesson в игнор листе что бы больше не видеть моих постов по поводу программирования


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

0
Автор поста оценил этот комментарий
Для понимания программирования есть книги по составлению алгоритмов, а также basic
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

#comment_79738527


Поставь себя на мое место и подумай, как и что бы ты давал студентам? Выслушаю твое мнение.

0
Автор поста оценил этот комментарий
нарушены области видимости, устаревший синтаксис (при том, что ты препод и должен учить впрок)
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

цель не изучить JS, а понять что такое программировать: переменные, функции, условия, циклы и т.п.

показать ответы
Автор поста оценил этот комментарий

Ага...
Чужой код - всегда говно :D

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

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

показать ответы
1
Автор поста оценил этот комментарий
Смотрю на твой код, а он говно.
Иллюстрация к комментарию
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

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

показать ответы
4
Автор поста оценил этот комментарий
Давайте посмотрим с другой стороны, я заканчивал ВУЗ в Германии

Система такова была - не сдашь дискретную математику, забудь о С, не сдашь С, не видать тебе С++, не сдашь С++, до расслабона типа php не доживешь. Не понятно- вали из универа. Поступило 20, выпустилось 7. А теперь вопрос, стоит ли прогибаться под "понял ли студент"?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Ключевая фраза "я заканчивал ВУЗ в Германии" :)


У нас так: 10 студентов - это ставка преподавателя. Выгонишь 10 студентов - минус одна ставка. Если студент ходит, просто ходит на пары (даже не на все), то ты ДОЛЖЕН (устный приказ от ректора деканам, от деканов завкафам, от завкафов обычным преподавателям) поставить хотя бы 3 (5-ти бальная система). Выгонять категорически нельзя. Валить на тройки можно (что бы лишить стипендии). Получается что на студентов то и нет рычагов давления.


То как я учился в начале нулевых, и моя жена в конце нулевых - большая разница. Преподаватель на программировании рассказывает как выбрать покрышку для автомобиль, а потом на сессии берет взятку за оценку и его таксу знаю все - это норма? ВСЕХ устраивало!


Итог: наплевательское отношение на учебу. Студенты знают что их не выгонят и ничего не сделают. Идейных преподаватель по пальцам посчитать можно (кто перевелся в другой университет, кто уволился, а кто уже и умер, все-таки возраст). Диплом стал просто корочкой. На третий курс приходят студенты, которые не то что бы понимать в программировании, но даже не знают чем отличается С++ от Матанализа :)


Вот как их учить компьютерной графике? Они должны были за 2 года выучить Си и С++, что бы я только давал OpenGL.


Приходится вот так как-то извращаться, что бы и дать азы программирования ТРЕТЬЕМУ курсу и дать знания по предмету.


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

3
ЪУЪ
Автор поста оценил этот комментарий
Я бы сказал, что js - это не очень удачный выбор языка для того, чтобы начать программировать.
раскрыть ветку (1)
Автор поста оценил этот комментарий

Пробую экспериментировать, т.к. являюсь преподаватели в университете. Два года читал Юнити, но из-за того что не у всех студентов была возможность использовать мощное железо, были трудности с ним. В этом году пробовал С++ в связке с OpenGL - всего пару человек поняло что это и как с этим работать :) Вот теперь готовлю курс по компьютерной графике на следующий год, решил js попробовать.

показать ответы

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества