русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Любая частьforможет быть пропущена.


Дата добавления: 2015-07-09; просмотров: 988; Нарушение авторских прав


Например, можно убрать начало:

var i = 0;
for (; i<3; i++) ...

Можно убрать и шаг:

var i = 0;
for (; i<3; ) {

 

// цикл превратился в аналог while (i<3)
}

А можно и вообще убрать все, получив бесконечный цикл:

for (;;) {
// будет выполняться вечно

 

}

При этом сами точки с запятой ; обязательно должны присутствовать, иначе будет ошибка синтаксиса.

for..in

Существует также специальная конструкция for..in для перебора свойств объекта.

Мы познакомимся с ней позже, когда будем говорить об объектах.

Важность: 4

Для каждого цикла запишите, какие значения он выведет. Потом сравните с ответом.

  1. Префиксный вариант
var i = 0;
while (++i < 5) alert(i);
  1. Постфиксный вариант
var i = 0;
while (i++ < 5) alert(i);

Решение

[Открыть задачу в новом окне]

Важность: 4

Для каждого цикла запишите, какие значения он выведет. Потом сравните с ответом.

  1. Постфиксная форма:
for(var i=0; i<5; i++) alert(i);
  1. Префиксная форма:
for(var i=0; i<5; ++i) alert(i);

Решение

[Открыть задачу в новом окне]

Важность: 1

Посмотрите страницу tutorial/intro/source/loop.html.

Перепишите код, заменив цикл for на while, без изменения поведения цикла.

Решение

[Открыть задачу в новом окне]

Важность: 5

Напишите цикл, который предлагает prompt ввести число, большее 100. Если посетитель ввел другое число — попросить ввести еще раз, и так далее.

Цикл должен спрашивать число пока либо посетитель не введет число, большее 100, либо не нажмет кнопку Cancel (ESC).

Предполагается, что посетитель вводит только числа.

Пример работы.

Решение

[Открыть задачу в новом окне]

‹ Логические операторы Директивы break и continue ›

01.11.2010



Илья Кантор


Александр

var answ = 1;
while ( (answ = prompt('Введите число больше 100', 100)) <= 100 && answ ) {}

Катерина Червенкова

Я попробовала все возможные варианты решения задачи:

var i = 0;
while (i < 3) {
alert(i++);
}

http://learn.javascript.ru/pla...

Обнаружилось, что
- первые два аналогичны по результату (потому что постфиксная форма возвращает сначала старое значение, потом новое), причём вариант с i++ короче;
- а вторые два различаются: первый выводит сразу новое значение (что закономерно), и даже одно выходящее за границы условия (3), поэтому такая форма записи для решения не подходит; а второй выводит сперва старое, потом новое, то есть в принципе аналогичен первым двум.
Итого: оптимален самый первый вариант.

Влад



<script type="text/javascript">
var i = 0;
while (i < 3) {
alert("number " + i + "!");
i++
}
</script>

Nikamir

for(i=0; i<100 && i!=null;){i = prompt('Number?','')}

almariel2

Я, конечно, не так сделала, но почему-то результат условиям соответствует

var numb = prompt ('Введите число больше 100', '');
while (numb < 100 ) {
var numb = prompt ('Введите число больше 100', '');
}

·

Александр Белец

нет проверки на null, плюс, дважды одна команда повторяется, чего можно было бы избежать в do...while. Речь идет о красоте кода, однако, на нее полезно ориентироваться, полагаю, для систем с высокой нагрузкой.

GrafMonteKristo

  • Вдоволь постебавшись над циклом for, я понял, что это некий гибрид управляющей конструкции, блока, задающего переменные и трёх (!!) вспомогательных блоков с действиями.

    Посмотрите на скрипт - повеселитесь от души! =)

·

Александр Белец

интересно, сколько будет итераций у цикла for(i++;i++<10;i++){console.log(i);}

·

GrafMonteKristo

Ты читать умеешь или нет? Я же русским языком написал "любое присвоение КРОМЕ любой формы -крементов".

·

Александр Белец

Эй, полегче, я тебе не брат или сестра, чтобы так фамильярничать. Уберем из первого блока инкремент, хорошо. Каков ответ на такой вопрос? Сколько будет в итоге итераций, каков будет их порядок? Интереса это почти не снижает.

Го

От 1 до 5.

var i = 0;while (i++ < 5) alert(i);Первое значение: i=1. Остановимся на нём подробнее. Оператор i++увеличивает i, возвращая старое значение, так что в сравнении i++ < 5 будет участвовать старое i=0.А почему 0 не выведет?

·

Artur Trvd

var i = 0;while (i++ < 5) alert(i);
при сравнении: (i++ < 5) сначала сравнивает 0 < 5 потом увеличивает но на 1, а когда идёт в тело цикла в i уже значение 1 вот он и выводит 1

·

Artur Trvd

потом увеличивает ноль на 1*

сори клавиши на клаве западают)

Mel1

А можно так про 100 написать?

var num=0;
while (num != null && num=prompt('Введите число больше 100',0) <= 100 ) ;

ПавелСурж

Я решил задачу про больше ста так:
<title></title><meta charset="utf-8"><script>var a = 1;while (a <= 100) {a = prompt('Введите число большее 100.','');}</script>

David

Да, не помешало бы итога в конце главы и заданий по всему что было в этой главе! тогда все хорошо закрепится и запомнится)

Baizer

1var i = 3;2 3while(i) {4 alert(i--);5}
РешениеОтвет: 3,2,1.А не 1.

Андрей Гладков

Я только начал изучать язык по данному ресурсу. Последнюю задачу решил так:

for (var i=0; i<100&& i!=null; i =prompt('enter the namber > 100','')) {}Спасибо за замечательный ресурс:)!

·

palehorse

Очень кривое решение, которое, во-первых, противоречит самой природе цикла for (for использует переменную-счетчик, которая в пределах цикла должна использоваться лишь для подсчета количества итераций, а не для сохранения значений каких-либо выражений), во-вторых, затрудняет читаемость кода, в-третьих, работает некорректно (попробуйте, используя этот код, ввести не число). Циклы while и do-while существуют не для красоты, пользуйтесь ими, это как раз подходящий случай. Учитесь с самого начала решать задачи правильно во всех смыслах.

·

palehorse

Прошу прощения насчет третьего пункта, не дочитал условие задачи до конца :)

·

Андрей Гладков

Тогда как я понимаю должно быть в током виде:

for (var i=0; i<100&& i!=null; ) { i =prompt('enter the namber > 100','')
}Спасибо за обратную связь.

·

Андрей Гладков

Прочитал еще раз:) вот так вот поторопился... и понял что речь шла и об имени переменной тоже.. т.е такой вид можно считать корректным :
for (var num = 0; num<100&& num!=null; ) {
num =prompt('Введите число больше 100','')
}

·

Андрей Гладков

Вот опять прочитал и из ваших слов, вижу что цикл For только считает количество итераций а не для сохранения значения.. Но значение полученное в результате выполнения цикла for можно вывести.. ( в теории? или я ошибаюсь?).Что то я окончательно запутался..

Для изучения пользуюсь только этим ресурсом..

Dimitry Lapynow

Отличная глава, спасибо!

Скучаю по итогам в конце главы, как было в некоторых ранее,
что бы укомплектовать информацию и закрепить материал.

Volya Pers

Почему етот код не работает?о_О
do { var numbr=promt("Введите число больше 100 и всё будет нормас",""); } while(numbr<=100 && numbr!=null);

·

ATi

Потому что
promt is not definedОчепятка))

Volya Pers

Почему етот код не работает?о_О

do { var numbr=promt("Введите число больше 100 и всё будет нормас",""); } while(numbr<=100 && numbr!=null);

Сергей

У меня работает такой код:
<script> do { var num=prompt('Введите число, большее 100',''); if (num<=100&& num!=null) { alert ('Вы ввели число, меньше 100. Попробуйте еще раз )'); } } while (num<=100 && num!=null); alert ('Введенное Вами число - '+num);</script>
Только как сделать, чтобы откидывало все символы кроме цифр?

Dennis

Последняя задача – просто потрясающая (по крайне мере – для чайника, вроде меня).Во-первых, хочу сказать, что фраза в последнем предложении решения задачи «при вводе null» создает впечатление, что имеется ввиду введение строки « null» в промпт. Может написать «при возращении промптом значения null»…Во-вторых, данная задача отлична помогла еще раз уяснить, что такое специальное значение null и в чем различия работы логических операторов ИЛИ и И.И в-третьих, я не совсем понял алгоритм сброса цикла при введении строки. Получается, что при введении строки сравнение num <= 100 дает false, но почему именно? Не может же быть, что любая буква больше цифры сто, или может?

·

Dennis

Методом проверки всех вариантов сравнения разобрался, почему строка дает False и обрыв цикла: во всех сравнениях с цифрой строка дает False, кроме сравнения “НЕ равно”.

Также прочитал еще раз раздел «операторы сравнения» и понял почему Null дает True в данном сравнении (так как Null приводится к нулю).

А вот с пустой строкой, вернувшейся из промпта – не понятно.

Если пустую строку, вернувшуюся из промпта, сравнить (пустая строка<1) то будет True, поэтому цикл повторяется. Но ведь должно вернутся Ubdefined, которое как сказано в разделе «операторы сравнения» «При преобразовании в число undefined становится NaN … А значение NaN по стандарту устроено так, что любые сравнения с ним возвращают false». Непонятно…

PS Сравнивал Ubdefined, полученную в такой ситуации: var num; alert(num<1); и, да, дает False, как и положено…

·

Dimitry Lapynow

Функция prompt возвращает тип String, а при сравнении строки с числом выдается значение false. И если вписать любое символьное значение(включая 'null'), то получим false и прерывание цикла.

Пустая же строка приравнивается к 0, что подходит по условию цикла, поэтому прерывания не вызывает.

Fenix-2750

var num=prompt('Введите число, большее 100', '0');
do {
var num = prompt("Введите число больше 100?", 0);
} while(num <= 100 && num != null);
alert('Верно!');

Это скрипт, данный в решении. Если два раза нажать на "Отмена", цикл прекращается и выводит "Верно!". А если сделать проще, например, вот так:

var num=prompt('Введите число, большее 100', '0');while(num<=100) { var num = prompt("Введите число больше 100?", 0);} while(num <= 100 && num != null);alert('Верно!');

или так:

var num=prompt('Введите число, большее 100', '0');for(; num<=100; ) { var num = prompt("Введите число больше 100?", 0);} while(num <= 100 && num != null);alert('Верно!');то будет работать до тех пор, пока не введете число, большее 100.

Vir2alex

Объявлять одну и ту же переменную много раз, это хорошо?

·

Patch

особого смысла в этом нет, да и считается плохим тоном.

Ag-velichko

последняя задача еще проще:
var i=prompt('Введите число','');for(;i<=100&&i!=null; ){i=prompt('Введите число','');}

·

shamash

Тогда уж и var внутрь for:
for(var i=prompt('Введите число','');i<=100&&i!=null; ){i=prompt('Введите число','');}

Verasiavka

Меня интересует тот же вопрос, что и Катюшу Гриценко

Во
второй части задания "Для каждого цикла запишите, какие значения он
выведет. Потом сравните с ответом." (в решении) указано объяснение,
почему первое значение i=1 вот так:

"Первое значение - i=1, по той же причине."

Тоесть, исходя из объяснений по первому циклу, причина вот такая:"Первое значение - i=1, так как первым выполнится сравнение ++i < 5. При этом i будет уже увеличена до 1." (т.е.1<5)зы. СНАЧАЛА увеличение i на 1, ПОТОМ сравнение этого увеличенного i=1 и 5.

Но, если я все правильно поняла, то это объяснение не подходит для второго цикла. Оно должно быть примерно таким:"Первое
значение - i=1, так как первым выполнится сравнение i++ < 5. При
этом i будет равно 0, т.е. 0<5 - условие выполняется. После этого i
увеличивается на единицу и становится равным 1, т.е. алертом выводится
уже 1."зы. СНАЧАЛА сравнение начального i=0 и 5, ПОТОМ увеличение i на 1.

  • Объясните, если я не права :)

·

Roman Skritskiy

Вы правы, во второй части первого примера фраза "Первое значение - i=1, по той же причине" неверна. Первым значением будет 0, он сравнивается с 5, потом i увеличивается и выводится 1.

Box4sawa

Мой вариант:
<script> var a = true while(a) { var number = prompt('Enter the number more than 100'); if(number > 100 || number == null) a = false; }</script>

    • Мне н


<== предыдущая лекция | следующая лекция ==>
Если левый аргумент —false, оператор И возвращает его и заканчивает вычисления. Иначе — вычисляет и возвращает правый аргумент. | Следующая итерация: continue


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.426 сек.