30.07.2014, 23:48
|
Интересующийся
|
|
Регистрация: 30.07.2014
Сообщений: 12
|
|
Не понимаю, начиная с циклов
По учебной программе идёт javascript.
Все хорошо, первые лекции все понимаю, с интересом вникаю. Но! Только доходит дело до циклов и первых же лабораторных с ними я становлюсь в ступор. Вот пример: преподаватель объясняет и показывает циклы while. Мне все понятно. И сразу же он задаёт очень простую задачку - "возвести 2 в степень 10, применить цикл while и вывести результат в консоль".
Я как тупица не могу сообразить как это описать, как составить алгоритм. Когда преподаватель показал и написал код я сразу все понял.
Далее снова лаба на этом же уроке: "вывести на экран символы таким образом, используя while
*
**
***
****
*****
я снова в ступоре не могу сообразить алгоритм.
Всё плохо?
|
|
31.07.2014, 00:00
|
|
Профессор
|
|
Регистрация: 23.06.2011
Сообщений: 1,165
|
|
да. Попробуйте выйти из ступора, изложите в словах свои мысли. Здесь же несложно совсем
|
|
31.07.2014, 00:55
|
Интересующийся
|
|
Регистрация: 30.07.2014
Сообщений: 12
|
|
дошло, но только после просмотра кода и объяснения преподавателя!
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).
Последний раз редактировалось xSPiRiTx, 31.07.2014 в 01:26.
|
|
31.07.2014, 01:30
|
|
Профессор
|
|
Регистрация: 13.03.2013
Сообщений: 1,572
|
|
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));
|
|
31.07.2014, 01:58
|
Интересующийся
|
|
Регистрация: 30.07.2014
Сообщений: 12
|
|
решение это хорошо, но дело в том, что мне нужно не решение. тут вопрос другой. я туго понимаю алгоритм решения задач. долго разбираюсь, и то если пинка дадут
|
|
31.07.2014, 03:15
|
Интересующийся
|
|
Регистрация: 30.07.2014
Сообщений: 12
|
|
вторая задача с треугольником решилась очень просто:
var string = "", cnt = 1;
while (cnt<=5) {
string += "*";
console.log(string);
cnt++;
}
|
|
31.07.2014, 10:23
|
|
Профессор
|
|
Регистрация: 23.06.2011
Сообщений: 1,165
|
|
xSPiRiTx,
ну, вот стоило только преодолеть ступор.
Инкремент, кстати, можно вынести в условие. Даже более логично и наглядно здесь было бы использовать декремент.
var string = "", cnt = 5;
while (cnt--) {
string += "*";
console.log(string);
}
|
|
31.07.2014, 10:42
|
|
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
xSPiRiTx, у всех так было. Практикуйся, сиди и тупи над задачами и если хватит задротства, то всё начнёт получаться. У меня первый год обучения был таким, например, мне почему то очень трудно давалась тема массивов, хз почему. Когда начал JS изучать, то очень долго не понимал прототипов (первые 2 года боялся их юзать и не вылезал за пределы задачек jQuery), а потом как то утром проснулся и всё само стало ясно.
Главное тут понять, что процесс обучения - это долгая штука. Я, например, уже 12+ лет изучаю программирование (начинал с Pascal, потом Delphi, потом PHP, потом C#, а уже потом JS), на JS 7 лет и процесс обучения всё идёт (в идеале он никогда не должен кончаться).
Последний раз редактировалось kobezzza, 31.07.2014 в 10:47.
|
|
31.07.2014, 10:48
|
|
:-/
|
|
Регистрация: 28.09.2009
Сообщений: 1,126
|
|
Сообщение от kobezzza
|
на JS 7 лет
|
и как, сильно торкает? ))
|
|
31.07.2014, 10:54
|
|
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
Сообщение от Shaci
|
и как, сильно торкает? ))
|
Ну, кол-во лет не главное на самом деле, а типы решаемых задач. Первые 3 года я делал всякую хрень: попачики, всплывашки, слайдеры и т.д. короче банальный UI и если бы так всё продолжалось, то наверное бы развитие уже давно остановилось, но потом круг задач резко изменился, и слава Богу
А вообще меня очень печалит, что нет времени ни на что, кроме JS и он мне порядком уже надоел, хочется поковырять Rust, D, но пока только совсем на примитив есть время
|
|
|
|