Jump to content
  • 0

Помогите прочитать код.


DivMan
 Share

Question

Программа возводит число 2 в 10 степень.

var num = 2;var exp = 10;var result = 1;var cnt = 1;	while (cnt <= exp) {	result *= num;	cnt++;}document.write(result);
Выполнять цикл, пока cnt будет меньше или равно exp,
потом взять число из переменной result и умножить его на число,
которое лежит в переменной num.
 
Я не понимаю, как тут взаимодействует переменная cnt
Link to comment
Share on other sites

Recommended Posts

  • 0

увеличивается при итерации цикла.

result умножается на num и получается ответ 2.

Как потом всё происходит, я не понимаю.

 

С каждым новым циклом, cnt увеличивается на 1.

 

Теперь переменная cnt равна двум, получается осталось 8 итераций

 

А во-втором цикле, что на что умножается?

Edited by DivMan
Link to comment
Share on other sites

  • 0
Я не понимаю, как тут взаимодействует переменная cnt

 

цикл while принимает значение false или true, цикл будет повторятся пока он будет получать true, в качестве значения может быть указано и условие которое возвращает булево значение, в данном случае пока "cnt <= exp" возвращает true цикл будет работать. Переманная cnt с каждым витком увеличивается на 1.

Link to comment
Share on other sites

  • 0

 

Я не понимаю, как тут взаимодействует переменная cnt

 

цикл while принимает значение false или true, цикл будет повторятся пока он будет получать true, в качестве значения может быть указано и условие которое возвращает булево значение, в данном случае пока "cnt <= exp" возвращает true цикл будет работать. Переманная cnt с каждым витком увеличивается на 1.

 

 

В первом цикле, когда result умножается на num, то получается ответ 2.

Теперь значение в переменной result изменяется на 2 

И во-втором цикле, уже 2 умножается на 2 и получается 4,

потом значение переменной result изменяется на 4 и так далее???? Я правильно понял?????

Link to comment
Share on other sites

  • 0

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

Link to comment
Share on other sites

  • 0

 

да, правильно 

result *= num означает  result = result * num 

 

подскажите небольшие задачки на подобии 

 

var i = 10,    x = 10,    y = 0,    cnt = 0;while(i--) {  x--;  cnt = i+x; }if (!x) y = 1;if(y) var z = 5;for(;z-- cnt+=++x;

Чему равна cnt? (Ответ без запуска кода).

Edited by vano1208
  • Like 2
Link to comment
Share on other sites

  • 0

 

не знаю

Где именно загвоздка? С какого места начинается "не знаю что происходит"?

 

 

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

Link to comment
Share on other sites

  • 0
var i = 10,    x = 10,    y = 0,    cnt = 0;while(i--) {  x--;  cnt = i+x; }if (!x) y = 1;if(y) var z = 5;for(;z--;) cnt+=++x;
Чему равна cnt? (Ответ без запуска кода).
z не проинициализирована изначально. На последнем шаге цикла x == 1, поэтому y == 0, и z просто undefined. Или я что-то упустил?

Аааа, понятно, что я упустил, я i-- как --i прочитал.

Но чтобы не было неознозначности, z лучше задать.

Link to comment
Share on other sites

  • 0
z не проинициализирована изначально. На последнем шаге цикла x == 1, поэтому y == 0, и z просто undefined. Или я что-то упустил? 

 

x будет равен 0

Первый шаг while (10), далее внутри цикла i = 9; x = 9

while(9) i = 8; x = 8

....

while(1) i = 0; x = 0

while(0) - выход из цикла

 

А вот, если изменить на while(--i), тогда z должна стать неопределенной

Link to comment
Share on other sites

  • 0
z не проинициализирована изначально

Переменная не может быть не проинициализирована, так как:

 

Выполнение скрипта происходит в две фазы:

  1. На первой фазе происходит инициализация, подготовка к запуску.

    Во время инициализации скрипт сканируется на предмет объявления функций вида Function Declaration, а затем — на предмет объявления переменных var. Каждое такое объявление добавляется в window.

    Функции, объявленные как Function Declaration, создаются сразу работающими, а переменные — равными undefined.

  2. На второй фазе — собственно, выполнение.

    Присваивание (=) значений переменных происходит, когда поток выполнения доходит до соответствующей строчки кода, до этого они undefined.

https://learn.javascript.ru/global-object#%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BE%D0%BA-%D0%B8%D0%BD%D0%B8%D1%86%D0%B8%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8

Link to comment
Share on other sites

  • 0
var i = 10,    x = 10,    y = 0,    cnt = 0;while(i--) {  x--;  cnt = i+x; }if (!x) y = 1;if(y) var z = 5;for(;z-- cnt+=++x;

Чему равна cnt? (Ответ без запуска кода).

 

Со второго раза правильно прошла итерации while ) Интересная задачка.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy