• Как понять решение задачи на JS?

    // просто функция проверяющая, является ли данное ей значение числом
    function isNumeric(n) {
      return !isNaN(parseFloat(n)) && isFinite(n);
    }
    
    // конструктор объектов типа Калькулятор, считай определение класса
    function Calculator() {
    
      // массив методов калькулятора, каждый из которых есть функция от двух чисел
      // виден только внутри объекта
      var methods = {
        "-": function(a, b) {
          return a - b;
        },
        "+": function(a, b) {
          return a + b;
        }
      };
    
      // публичный метод калькулятора, собственно его предназначение
      // принимает строку с выражением которое надо вычислить
      this.calculate = function(str) {
    
        // парсит строку с выражением
        // разбивая ее на 3 части по пробелам
        var split = str.split(' '),
          // создаются три переменные, два числа и операнд
          a = split[0],
          op = split[1],
          b = split[2]
    
        // валидация переменных
        if(!methods[op] || !isNumeric(a) || !isNumeric(b)) {
          return NaN;
        }
    
        // достается элемент массива methods под названием op
        // он является функцией
        // ей передаются оба числа и она с ними что-то делает
        // собственно результат ее выполнения возвращается из функции calculate
        return methods[op](+a, +b);
      }

    // еще один публичный метод калькулятора
    // принимает название функции и саму функцию
    // нужен, чтобы в массив methods можно было добавлять новые операции
    this.addMethod = function(name, func) {
    methods[name] = func;
    };
    }

    // создается новый объект класса Калькулятор
    var calc = new Calculator;

    // добавляется возможность умножать два числа, будет называться "*", объект функции прилагается
    calc.addMethod("*", function(a, b) {
    return a * b;
    });

    // аналогично, возможность делить одно число на другое
    calc.addMethod("/", function(a, b) {
    return a / b;
    });

    // аналогично, возведение в степень
    calc.addMethod("**", function(a, b) {
    return Math.pow(a, b);
    });

    // смотри описание this.calculate = function(str) {
    var result = calc.calculate("2 ** 3");
    alert(result); // 8
    Ответ написан
    4 комментария
  • Как преобразовать строку типа ('число + число') в сумму чисел (число + число)?

    NKros
    @NKros
    Возможно поможет String.split(" + "), затем newString = String[0] + String[1]
    Попробуйте через вышеописанное.
    Ответ написан
    Комментировать
  • Можно ли повторить эффект меню, без js?

    sayber
    @sayber
    Да, я программирую на PHP и еще асинхронно!
    Можно с помощью SVG
    Ответ написан
    Комментировать
  • Как понять момент в замыкании(JS)?

    @WhoMe
    Уже разобрались?
    Всё работает.
    Вызов makeCounter() каждый раз создает новую currentCount и возвращает новую функцию.
    console.log( makeCounter() () );
    console.log( makeCounter() () );

    Будет примерно эквивалентно
    var counter1 = makeCounter();
    var counter2 = makeCounter();
    console.log(  counter1() );
    console.log( counter2() );
    Ответ написан
    1 комментарий
  • Как понять момент в замыкании(JS)?

    @vsvladimir
    makeCounter() возвращает функцию - счетчик, которая при каждом вызове будет выдавать на 1 большее значение. И makeCounter для каждого вызова себя хранит текущее значение счетчика в переменной currentCount.

    Можно сделать несколько независимых счетчиков:
    var counter1 = makeCounter();
    var counter2 = makeCounter();

    makeCounter()() - создаст счетчик и запустит его 1 раз (результат 1).
    Если еще раз запустить makeCounter()() - появится новый счетчик (результат 1).
    Переменная counter нужна, чтобы запомнить тот самый счетчик, а не создавать каждый раз новый.
    Ответ написан
    Комментировать
  • Как понять момент в замыкании(JS)?

    dunmaksim
    @dunmaksim
    Технический писатель
    Переписал код, надеюсь, более понятно стало:
    function makeCounter(){
        //Эта переменная видна только здесь
        var currentCount = 0;
        
        //Эта функция - тоже только здесь, зато она видит currentCount
        function getCountValue(){
            currentCount += 1;
            return currentCount;
        }
        
        //Возвращаем саму функцию, а не её значение
        return getCountValue;
    }
    
    //counter = getCountValue
    var counter = makeCounter();
    
    counter(); //На самом деле - вызов getCountValue()
    Ответ написан
    Комментировать
  • Как понять момент в замыкании(JS)?

    abler98
    @abler98
    Software Engineer
    В примере сначала идет присвоение переменной функции makeCounter (об этом даже название функции говорит), которая в свою очередь возвращает другую функцию, в результате переменная counter = function() {
    currentCount++;
    return currentCount;
    }; Которую мы потом вызываем
    Ответ написан
    3 комментария
  • Полезны ли курсы от "Специалиста"?

    learn.javascript.ru вам в помощь. Написано доступным языком + есть куча практических примеров и заданий. Для старта самое оно.
    Ответ написан
    1 комментарий
  • Как изучить математику?

    globuzer
    @globuzer
    gezgrouvingus progreszive ombusgrander greyderzux
    если мат.моделирование, то будет близко с линейным программированием, матричным исчислением и конечно-разностными схемами связано много. особенно если моделирование математическо-физических сложных процессов и явлений, будь то взрывы или волны какие....
    да любые ДУ решать или делать большие подсчеты без конечно-разностных схем никуда.
    также актуально - нейроматематика, нейроалгоритмы.
    ну и погуглить по этим тэгам, плюс "вычислительная математика", "конкретная математика", "моделирование в программировании", "схемы и модели физических процессов с точки зрения математики".... что-то такое поищите, много что всплывет.
    вообще даже область моделирования очень обширна, могут затрагиваться различные сферы математики, алгебры, геометрии, теории вероятностей, физики и специализированных дисциплин
    Ответ написан
    Комментировать
  • Используются ли в программировании дифференциальное и интегральное исчисления?

    То, о чем вы спрашиваете, называется математическое моделирование, получившее мощнейший толчок в 50хх годах XX века при реализации Атомного проекта. Сейчас без моделирования не обходится ни создание мостов (прочностный анализ), ни самолетов с двигателями (газодинамика), ни разработка месторождений (подземная гидрогазодинамика). Почитайте, например, области применения пакетов вроде Ansys. Очень актуальны также тренажеры для различных отраслей, весь математический аппарат которых основан на решении диффуров в частных производных. Та же нефтянка сегодня одна из самых наукоемких отраслей, где востребованы прикладные математики, умеющие реализовывать численные методы.
    Ответ написан
    1 комментарий
  • Можете рассказать о ВМК МГУ?

    globuzer
    @globuzer
    gezgrouvingus progreszive ombusgrander greyderzux
    В самом начале пути, чтобы не упустить время, делай упор на физико-математические дисциплины, и основы информатики, булевой алгебры... и не забывай отслеживать все современные тенденции в мире информационных технологий, просто для хобби и развлечения своего развития личности. Все это постепенно скажется на твоем успехе. Будешь экспертом, если тебя затянет это все, полюбишь это до единичек и нулей, и никакой null тебя не испугает, никакой overflow не повернет с нужного пути. Главное любить свое дело и стремиться к его улучшению. Ну и любить всех окружающих и благодарить весь этот мир, что вокруг тебя, ведь солнце тоже не спроста светит.... :)
    Ответ написан
    Комментировать
  • В каких ВУЗах есть направление web-dev/?

    globuzer
    @globuzer
    gezgrouvingus progreszive ombusgrander greyderzux
    Для веб-разработки нужна (сгодиться) любая ай-ти специальность, ориентированная на программирование, интернет, сети, и т.д. В этих вузах (коих достаточно) по этим специальностям везде есть предметы связанные с вебом, интернетом. А вышка нужна (пригодиться вам) во первых для солидности, а во вторых, все таки в институте заложат базу знаний, основных концепций программирования, алгоритмов, структур данных, операционных систем, и всей теоретической базы, не говоря уж о математике. Просто в будущем вы будете систематически мыслить и более рационально искать и уметь искать информацию. А вебу науичитесь в процессе всего, даже параллельно с учебой можно осваивать. Будет комплексное освоение навыка, в результате которого (если сможете закончить вуз) вы будете хорошим специалистом. Кстати, в вузе можно по веб-разработке также делать диплом или лабы, все будет плюсом. Ну и новые друзья, общение, знакомства, идеи. И обязательно самостоятельная работа над собой. В институтах многое не дают или дают поверхностно, не говоря уж о всяких новеньких фреймворках и стилях... Это уж сами осваивайте и будете крутым спецом!
    Ответ написан
    Комментировать
  • В каких ВУЗах есть направление web-dev/?

    Могу посоветовать ИТМО в Спб.
    У них реклама крутая даже есть :)
    21pyvkEy-DM.jpg

    з.ы.: ВУЗ - это не потеря времени и не пустое занятие. И опыт приобретенный в нем тоже весьма ценен, а уж сколько возможностей открывается во время учебы.

    В любом случае плюсов от наличия высшего образования больше, чем минусов. Как в этой стране, так и любой другой.
    Ответ написан
    Комментировать
  • Из каких источников учить JavaScript, jQuery, Node.js, Backbone.js, и прочие технологии?

    termosa
    @termosa
    new function () { var r = /* value */; return r; }
    Для JavaScript советую полистать learn.javascript.ru

    По NodeJS там же есть отличные скринкасты.

    Все остальное - только на практике. Сколько не читал про
    этот маленький Backbone - не понимал его, пока не вставил
    его в проект. Потом уже на их сайте и на stackoverflow разбирался с ним.

    По Angular - начал с CodeSchool, затем подфартило поработать с ним
    на живом проекте и сейчас читаю Mastering Web Application Development with AngularJS.
    Ответ написан
    Комментировать
  • Как решить задачу про разрез(написать программу)?

    Mrrl
    @Mrrl
    Заводчик кардиганов
    Сначала проверяете, есть ли свеча в центре. Если есть, то очевидно, нельзя (любой разрез, делящий торт пополам, проходит через центр).
    Потом для каждой свечи находите направление на неё из центра. В большинстве языков это делается вызовом функции atan2(y,x) (в предположении, что центр находится в точке (0,0)). Она выдаёт угол в радианах, лежащий в промежутке от -pi до pi.
    Сортируете углы по возрастанию: a1<=a2<=...<=an.
    Если an-a1 < pi-eps, то все свечи лежат внутри угла, меньшего pi, и разрез есть.
    Если для какого-то k a{k+1}-ak > pi+eps, то есть пустой угол, больший pi, и разрез тоже есть.

    Сложности возникают, когда an-a1 или a{k+1}-ak очень близки к pi, и надо точно проверить, больше угол, чем pi, меньше, или равен. Здесь всё зависит от жестокости авторов задачи.
    Если числа заданы, как целые, не превосходящие по модулю 10^9, то достаточно посчитать определитель x{k+1}*y{k}-x{k}*y{k+1}, и по его знаку определить, с какой стороны линия, соединяющая свечи, пройдёт от центра. Произведения укладываются в int64, и всё просто.
    Если числа целые и не превосходят 10^18, то дело хуже. Существуют алгоритмы проверки, не выходящие за int64 (специально написанный алгоритм Евклида), но возможно, что проще воспользоваться длинной арифметикой.
    Хуже всего, если координаты - вещественные числа произвольного формата. Боюсь, что тут придётся писать свой парсер - простого хорошего способа надёжно проверить, что свечи с координатами, скажем (1.2E220, 2.7E-180) и (-2.8E200, 6.3E-200) лежат строго на одной прямой, проходящей через центр, я не знаю.
    Ответ написан
    Комментировать
  • Перевёл интересную многим книгу на русский. Как использовать?

    sabramovskikh
    @sabramovskikh
    Что хоть за книга?
    Ответ написан
    Комментировать
  • Хороший ли это план образования для программиста?

    fornit1917
    @fornit1917
    Не следует зацикливаться на этом вопросе. Разработчики свои знания и навыки, необходимые им для работы, все равно получают не в ВУЗе, на какой бы специальности они не учились.

    Как вы выбирали факультет и не зря учили то что вам теперь не надо?

    Любил математику и пошел учиться на математика (хотя в разработку ПО на моей специальности уклон был довольно сильный).
    К сожалению в работе знания математики, полученные в вузе, мне практически не требуются. Но я о своем выборе вуза/факультета не жалел никогда.
    Ответ написан
    Комментировать
  • Как понять момент решения задачи на JS?

    gbg
    @gbg Куратор тега Программирование
    Любые ответы на любые вопросы
    Создается ассоциативный массив, ключами в котором являются строки. Так как ключи в таком массиве уникальны, когда в исходных данных встречается повторная строка, новый элемент массива obj не создается, а просто переписывается ранее созданный. Итог работы подпрограммы - массив ключей массива obj, которые и являются уникальными строками.
    Ответ написан
    Комментировать