|
278 / 272 / 106
Регистрация: 12.01.2016
Сообщений: 1,666
|
|||||||||||
Создайте функцию, которая будет запрашивать ввод числового значения до тех пор, пока посетитель его не введёт.06.06.2022, 12:05. Показов 1233. Ответов 19
Метки нет (Все метки)
Всем привет. Есть условие: Создайте функцию readNumber, которая будет запрашивать ввод числового значения до тех пор, пока посетитель его не введёт. Функция должна возвращать числовое значение. Также надо разрешить пользователю остановить процесс ввода, отправив пустую строку или нажав «Отмена». В этом случае функция должна вернуть null.
На сайте learn.js дают такое решение:
0
|
|||||||||||
| 06.06.2022, 12:05 | |
|
Ответы с готовыми решениями:
19
Запрашивать у пользователя числовые значения, до тех пор, пока не будет введено значение 0 Запрашивать ввод до тех пор, пока не будет введена заданная фраза, после чего вывести её 100 раз
|
|
3827 / 1664 / 429
Регистрация: 14.03.2022
Сообщений: 4,191
|
||
| 06.06.2022, 14:43 | ||
|
Помимо функции у тебя еще есть переменная.
0
|
||
|
278 / 272 / 106
Регистрация: 12.01.2016
Сообщений: 1,666
|
||
| 06.06.2022, 14:55 [ТС] | ||
|
А цикл do...while чем отличается их решение от моего, кроме того, что их реализация do...while гарантированно один раз выполнит num = prompt("Введите число", 0); (но в работе этого когда не заметно).
0
|
||
|
3827 / 1664 / 429
Регистрация: 14.03.2022
Сообщений: 4,191
|
||||
| 06.06.2022, 15:00 | ||||
![]() Добавлено через 4 минуты Чисто "идеологически" авторы явно показывают что "действие будет выполнено в любом случае". А зацикливание будет или нет - решит условие. Твой вариант сразу "ставит условие", де может и не выполнится тело цикла... Нужно анализировать данные и смотреть условие... Т.е. семантика у тебя так же "проигрывает".
1
|
||||
|
Модератор
2379 / 1739 / 677
Регистрация: 07.08.2016
Сообщений: 4,093
|
|||||||
| 06.06.2022, 15:04 | |||||||
|
Ну и плюс при вводе 0 ваша функция возвращает null так как
1
|
|||||||
|
3827 / 1664 / 429
Регистрация: 14.03.2022
Сообщений: 4,191
|
||||||||||||
| 06.06.2022, 15:10 | ||||||||||||
|
Вот пример
0
|
||||||||||||
|
Модератор
2379 / 1739 / 677
Регистрация: 07.08.2016
Сообщений: 4,093
|
|
| 06.06.2022, 15:10 | |
|
ну и до кучи условие
numRead == null никогда не будет проверяться, так как prompt при нажатии отмены вернет null, а +prompt превратит его в 0
0
|
|
|
3827 / 1664 / 429
Регистрация: 14.03.2022
Сообщений: 4,191
|
|
| 06.06.2022, 15:11 | |
|
0
|
|
| 06.06.2022, 15:13 | |
|
0
|
|
|
278 / 272 / 106
Регистрация: 12.01.2016
Сообщений: 1,666
|
|||
| 06.06.2022, 15:27 [ТС] | |||
learn.javascript.ru дошёл только до типов данных, а Вы мне тут пытаетесь объяснить про "бесконечную кривую". И вообще, у меня мозгов как у хлебушка...
0
|
|||
|
3827 / 1664 / 429
Регистрация: 14.03.2022
Сообщений: 4,191
|
|
| 06.06.2022, 15:58 | |
|
0
|
|
|
278 / 272 / 106
Регистрация: 12.01.2016
Сообщений: 1,666
|
|||||||
| 06.06.2022, 17:47 [ТС] | |||||||
while (!isFinite(numRead)), а уже потом мы вводим значение numRead = +prompt(); (то есть у нас появляется одно лишнее выполнение цикла), после выполняется блок if() и если в нём звёзды сошлись, то возвращаем numRead. А в варианте автора, сначала вводим значение, а потом уже идёт проверка... return +num делать такие конструкции, я думал, если мы хотим из прообразовывать из строки в число, то лучше это делать сразу в +prompt().krvsa, AlexZaw, Подскажите, я правильно понимаю эту строку (если переводить её на человеческий язык) while (!isFinite(numRead)) - Пока numRead НЕ является числом, то выполняем блок if(), как только numRead будет равно числу, то возвращаем return numRead;return +numRead;, а не во время того как мы вводим это самое число numRead = prompt(); (Суть я понял, но каша в голове и не могу нормально сформулировать, да и с определениями туговато).Добавлено через 2 минуты
0
|
|||||||
|
3827 / 1664 / 429
Регистрация: 14.03.2022
Сообщений: 4,191
|
||||||||||
| 06.06.2022, 18:50 | ||||||||||
|
Но реализация их работы может быть какой угодно. Чисто фантазия автора. ![]() ![]()
В нашем случае в промт вернет строку. Вот если эта строка "конечное число" у нас будет "истина".
1
|
||||||||||
|
Модератор
2379 / 1739 / 677
Регистрация: 07.08.2016
Сообщений: 4,093
|
|||||||||
| 06.06.2022, 18:58 | |||||||||
|
Пусть "a" это количество проверок, а "b" это количество выполнений цикла. Тогда в первом случае: выполняется тело do { num = prompt("Введите число", 0); } приплюсовываем b (1)выполняется проверка while ( !isFinite(num) ); приплюсовываем а (1)Если ввели число то isFinite(num) дает true, отрицание "!" дает false, завершаем цикл и идем дальше, итого a=1, b=1 Если ввели пустую строку или нажали отмену, то isFinite(num) преобразует их в 0, из-за "!" опять же получаем false и завершаем цикл. В вашем варианте: делаем проверку while (!isFinite(numRead)) приплюсовываем a (1)так как у нас в самом начале переменная numRead объявлена, но не инициализирована (не присвоено значение) то ее значением является undefined isFinite(undefined) дает false, отрицание "!" дает true и условие while выполняется Выполняем тело цикла
если же мы ввели число (в данном случае кроме 0) то условие в if не срабатывает и цикл возвращается к условию, приплюсовываем a(2) Условие в итоге дает false, цикл завершается итого a=2, b=1. Т.е. одна лишняя проверка. уфф ![]() Правда потом вы дойдете до всякой фильтрации массивов, прототипов, промисов и станет еще веселее
1
|
|||||||||
|
278 / 272 / 106
Регистрация: 12.01.2016
Сообщений: 1,666
|
|
| 06.06.2022, 21:44 [ТС] | |
|
AlexZaw, krvsa, Уважаемые, а сколько у Вас опыта работы в программировании, и где Вы работаете(ли)? (И что мне нужно, для того что бы достичь Вашего уровня?) И если Вас не затруднит, напишите, про весь Ваш путь от самого начала и до сегодня.
0
|
|
|
Модератор
2379 / 1739 / 677
Регистрация: 07.08.2016
Сообщений: 4,093
|
|
| 06.06.2022, 22:16 | |
|
Freeze_Breeze, у меня путь краткий и простой до банальности - сначала учил html и css по разным самоучителям, в основном по htmlbook. Потом наткнулся на этот форум и стал читать вопросы других пользователей и пытаться решить поставленную задачу, когда сам, когда с помощью гугла.
Потом помаленьку начал учить js на ютубе, learnjs и опять же по этому форуму. После чего выиграл обучение в htmlacademy по профе frontend-разработчик, но почти все что там преподавали я к тому моменту уже и так знал благодаря поиску ответов на вопросы других Что-то новое конечно узнал и во время обучения, но это в основном была инфа по доступности, БЭМ и гиту, ну и по js научился модулям, промисам, и так, по мелочи. Т.е. опять же тому, что можно спокойно изучить самостоятельно.Умных книжек никаких не читал, хотя в свое время накачал их довольно много, но руки до сих пор так и не дошли ![]() Что касается моего уровня, хотя самого себя оценивать трудно, так я его оцениваю как недоджун
2
|
|
|
3827 / 1664 / 429
Регистрация: 14.03.2022
Сообщений: 4,191
|
|||
| 06.06.2022, 22:19 | |||
![]() Руководитель отдела разработки...
1
|
|||
| 06.06.2022, 22:21 | |
|
0
|
|
|
3827 / 1664 / 429
Регистрация: 14.03.2022
Сообщений: 4,191
|
|
| 06.06.2022, 22:22 | |
|
1
|
|
|
278 / 272 / 106
Регистрация: 12.01.2016
Сообщений: 1,666
|
|
| 06.06.2022, 22:25 [ТС] | |
|
AlexZaw, Благодарю Вас. Вы мне очень помогли. Спасибо
0
|
|
| 06.06.2022, 22:25 | |
|
Помогаю со студенческими работами здесь
20
Запрашивать пароль до тех пор, пока он не будет правильно введен Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|