Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Я учу JavaScript (https://javascript.ru/forum/misc/43357-ya-uchu-javascript.html)

ksa 05.12.2013 21:36

Цитата:

Сообщение от danik.js
насколько я знаю за while(true) в некоторых местах могут наругать

Тогда модифицируем немного...

do {
	var i = Number(prompt("Введите любое число больше 5"));
	if (i <= 5){
		alert("Вы ввели "+i+" , Пожалуйста введите число больше 5");
	} else {
		alert("Спасибо, вы ввели "+i);
	};
} while (i<=5);
alert("Число "+i);
//document.write("Число "+i);

Vlasenko Fedor 06.12.2013 03:01

Вариант учитывает ввод ошибочных данных к примеру букв
for (var getNumber = function () {
      return prompt("Введите любое число больше 5")
  }, i; i = getNumber(), 5 >= i || isNaN(i);) 
  //закончили объявление переменных и условие цикла, ниже строчка одна - тело цикла как видите можно без {}
    alert("Вы ввели " + (isNaN(i) ? 'не число': i) + ". Пожалуйста введите число больше 5");
    alert("Спасибо, вы ввели " + i);

Цитата:

Сообщение от danik.js (Сообщение 284821)
правда за присвоение в условии тоже наругают

где ругают?
стандартный цикл это объявление переменных var a, b, c...;
выполнение действий можно в цепочку, последнее условие a++, b -=1, !с;
выполнение действий после выполнения прохода тела цикла --g, d=0, z--
for (var i = 3, b = 0; alert('i - ' + i--), i; alert('b - ' + b++))console.log(i, b);

Antonius 06.12.2013 04:12

Вот за такое и ругают :)

Если можно — не значит, что нужно. А тут человек явно написал, что только учится. Не учите плохому сразу — сам научится.

ksa 06.12.2013 08:36

Цитата:

Сообщение от Poznakomlus
Это должно расширять кругозор

Т.е. учиться на чужих ошибках... :D

В нашем случае на не совсем "правильном" оформлении кода.

Vlasenko Fedor 06.12.2013 12:58

Цитата:

Сообщение от ksa (Сообщение 284868)
Т.е. учиться на чужих ошибках... :D
В нашем случае на не совсем "правильном" оформлении кода.

Это вы о чем простите?
Стандарты? Удобство читаемости? Стиль написания?
Какие ошибки.
Ошибки в ваших примерах логические
Возьмите код
for(var i = 0; i < 5; i += 1){alert(i)}

Закиньте его в компилятор от Google http://closure-compiler.appspot.com/home

Antarius 06.12.2013 13:01

И тут я познакомился с функциями :) переварив код, вопросов не появилось :)))

Цитата:

Сообщение от danik.js (Сообщение 284821)
Другой вариант (насколько я знаю за while(true) в некоторых местах могут наругать, правда за присвоение в условии тоже наругают :) )
var promptNumber = function() {
    return Number(prompt("Введите любое число больше 5"));
}

var i; 
while ( (i = promptNumber()) <= 5) {
    alert("Вы ввели "+i+" , Пожалуйста введите число больше 5");
}

alert("Спасибо, вы ввели "+i);
//document.write("Число "+i);



ksa а как сделать тоже самое с циклом for ? Ведь мой вариант выводит не всё так четко как в твоем случае.
Просто for мне больше нравится :D
Цитата:

Сообщение от ksa (Сообщение 284829)
Тогда модифицируем немного...

do {
	var i = Number(prompt("Введите любое число больше 5"));
	if (i <= 5){
		alert("Вы ввели "+i+" , Пожалуйста введите число больше 5");
	} else {
		alert("Спасибо, вы ввели "+i);
	};
} while (i<=5);
alert("Число "+i);
//document.write("Число "+i);


Спасибо!! Интересно)
Цитата:

Сообщение от Poznakomlus (Сообщение 284863)
Вариант учитывает ввод ошибочных данных к примеру букв
for (var getNumber = function () {
      return prompt("Введите любое число больше 5")
  }, i; i = getNumber(), 5 >= i || isNaN(i);) 
  //закончили объявление переменных и условие цикла, ниже строчка одна - тело цикла как видите можно без {}
    alert("Вы ввели " + (isNaN(i) ? 'не число': i) + ". Пожалуйста введите число больше 5");
    alert("Спасибо, вы ввели " + i);


где ругают?
стандартный цикл это объявление переменных var a, b, c...;
выполнение действий можно в цепочку, последнее условие a++, b -=1, !с;
выполнение действий после выполнения прохода тела цикла --g, d=0, z--
for (var i = 3, b = 0; alert('i - ' + i--), i; alert('b - ' + b++))console.log(i, b);


Плохого не пожелают :lol:
Цитата:

Сообщение от Antonius (Сообщение 284864)
Вот за такое и ругают :)

Если можно — не значит, что нужно. А тут человек явно написал, что только учится. Не учите плохому сразу — сам научится.


ksa 06.12.2013 13:10

Цитата:

Сообщение от Antarius
а как сделать тоже самое с циклом for ?

Как вариант...

for (;true;) {
	var i = Number(prompt("Введите любое число больше 5"));
	if (i <= 5){
		alert("Вы ввели "+i+" , Пожалуйста введите число больше 5");
	} else {
		alert("Спасибо, вы ввели "+i);
		break;
	};
};
alert("Число "+i);
//document.write("Число "+i);

Но это уже полный изврат... :D

Цитата:

Сообщение от Antarius
Просто for мне больше нравится

Да ты эстет! :D

danik.js 06.12.2013 14:46

Вот как я представляю алгоритм реализации:

введенное_число = спросить_число()
пока (введенное_число <= 5) {
рапортуем("не канает!")
введенное_число = спросить_число()
}


соответственно мой немного измененный вариант:

var promptNumber = function() {
    return Number(prompt("Введите любое число больше 5"));
}
 
var i = promptNumber();
while (i <= 5) {
    alert("Вы ввели "+i+" , Пожалуйста введите число больше 5");
    i = promptNumber();
}
 
alert("Спасибо, вы ввели "+i);
//document.write("Число "+i);



Помоему это самый простой, легко читаемый, очевидный и сам собой напрашивающийся вариант.

В первом варианте я просто укоротил запись, и впринципе код так же укладывается в алгоритм.

Найду странным если другие сомной не согласятся :)

ksa 06.12.2013 14:51

danik.js, цикл с постусловием тут больше подходит... ;)
http://javascript.ru/forum/misc/4335...tml#post284829

danik.js 06.12.2013 15:42

ksa, у тебя дублируется проверка условия. Это не хорошо.


Часовой пояс GMT +3, время: 01:58.