Не понимаю, начиная с циклов
По учебной программе идёт javascript.
Все хорошо, первые лекции все понимаю, с интересом вникаю. Но! Только доходит дело до циклов и первых же лабораторных с ними я становлюсь в ступор. Вот пример: преподаватель объясняет и показывает циклы while. Мне все понятно. И сразу же он задаёт очень простую задачку - "возвести 2 в степень 10, применить цикл while и вывести результат в консоль". Я как тупица не могу сообразить как это описать, как составить алгоритм. Когда преподаватель показал и написал код я сразу все понял. Далее снова лаба на этом же уроке: "вывести на экран символы таким образом, используя while * ** *** **** ***** я снова в ступоре не могу сообразить алгоритм. Всё плохо? |
да. Попробуйте выйти из ступора, изложите в словах свои мысли. Здесь же несложно совсем
|
дошло, но только после просмотра кода и объяснения преподавателя!
var num =2, exp =10, result =1; count = 0; while (count<exp) { result = result*num; count++; } console.log(result); для удобства и для того, чтобы в будущем можно было легко менять значения, не перелопачивая весь код объявляем переменные: num - число, которое будем возводить в степень, exp - сама степень, result - переменная для получения результата, мы ее обозначили как числовой тип и присвоили единицу, потому что если там будет 0, то при возведении в степень всегда будет результат 0, count - ну и счётчик...причем у нас ему присвоен 0, значит в решении count должен быть меньше exp ибо отсчет начинается с нуля...а с нуля до девяти - это уже 10 (нам требуется возвести в степень 10)...если же в count мы запихаем 1, то тогда в решении будет count <= exp, потому что начнется отсчёт с единицы пока не станет равно нашей exp, которая в свою очередь равна 10. результатом будет присвоение переменно result умножение её на число, которое возводится в степень. т.е. 1*2=2, теперь уже переменная result = 2. а значит в следующем цикле result = result*num будет выглядеть как 2*2. счётчик увеличился на один шаг (count++) и пока что в теле while значение true, поэтому он продолжает запускать цикл заново. Таким образом пока счетчик не перестанет соответствовать условию, что он меньше 10 (count<exp) циклы будут запускаться снова и снова. в то же время переменная result все набирает и набирает обороты. 2*2 - уже она равна 4 и выражениу result*num уже выглядит как 4*2 (у нас уже получается 2 в степени 3). |
var num = 2; var exp = 10; var count = 1; var result = 1; //2 в 0 while (count <= exp) { result *= num; count++; } alert(result); alert(Math.pow(2, 10)); |
решение это хорошо, но дело в том, что мне нужно не решение. тут вопрос другой. я туго понимаю алгоритм решения задач. долго разбираюсь, и то если пинка дадут
|
вторая задача с треугольником решилась очень просто:
var string = "", cnt = 1; while (cnt<=5) { string += "*"; console.log(string); cnt++; } |
xSPiRiTx,
ну, вот :) стоило только преодолеть ступор. Инкремент, кстати, можно вынести в условие. Даже более логично и наглядно здесь было бы использовать декремент. var string = "", cnt = 5; while (cnt--) { string += "*"; console.log(string); } |
xSPiRiTx, у всех так было. Практикуйся, сиди и тупи над задачами и если хватит задротства, то всё начнёт получаться. У меня первый год обучения был таким, например, мне почему то очень трудно давалась тема массивов, хз почему. Когда начал JS изучать, то очень долго не понимал прототипов (первые 2 года боялся их юзать и не вылезал за пределы задачек jQuery), а потом как то утром проснулся и всё само стало ясно.
Главное тут понять, что процесс обучения - это долгая штука. Я, например, уже 12+ лет изучаю программирование (начинал с Pascal, потом Delphi, потом PHP, потом C#, а уже потом JS), на JS 7 лет и процесс обучения всё идёт (в идеале он никогда не должен кончаться). |
Цитата:
|
Цитата:
А вообще меня очень печалит, что нет времени ни на что, кроме JS и он мне порядком уже надоел, хочется поковырять Rust, D, но пока только совсем на примитив есть время :( |
Часовой пояс GMT +3, время: 16:48. |