Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/222: Рейтинг темы: голосов - 222, средняя оценка - 4.71
10 / 59 / 21
Регистрация: 12.03.2017
Сообщений: 514

Коллбэки

22.01.2018, 15:54. Показов 48326. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Иногда бывают ситуации, когда вы хотите поручить управление программой функции, а не ориентироваться на результат её выполнения. Этому может быть много причин.

Во-первых, это упрощает код, который пользуется вашей функцией.
Во-вторых, бывают программы, в которых несколько наборов команд выполняется параллельно и независимо друг от друга. Например, когда ваша программа подключается к интернету, это обычно делается параллельно с работой остальной программы, ведь запрос может занять как долю секунды, так и минуты. Так же обычно поступают, когда вычисление занимает очень много времени. Взаимодействие с пользователем тоже может занимать очень много времени по меркам компьютерной программы - секунды на то, чтобы пользователь ввёл текст. Было бы очень неудобно, если бы, пока выполняется запрос, зависла бы вся программа.

Проблема с частями программы, которые выполняются независимо друг от друга – в том, что основная программа не может отследить, когда интернет-запрос завершится, если только не будет постоянно это проверять.
Зато сам запрос точно знает, когда он завершился и может что-то сделать по завершении. Например, показать вам загруженную картинку или обновить ленту сообщений. А иногда – сообщить о том, что произошла ошибка.
Но на результат завершения одного и того же запроса можно реагировать по-разному: иногда не нужно делать ничего, в других случаях – показать результат, в третьих – сохранить результат в файл и так далее.
Значит, программе нужно знать, как реагировать на окончание запроса. Это делается при помощи так называемых коллбэков (callback), что переводится как обратный звонок. Коллбэком называется специальная функция, которая вызывается, когда ваше вычисление завершилось. Для программы, запустившей запрос или долгое вычисление, коллбэк – это способ сообщить, что надлежит сделать, когда вычисление завершится. Коллбэк обычно передают как аргумент функции запуска вычисления.
________________________________________ __________________________

Ваша задача – написать функцию askPassword(success, failure), которая спрашивает у пользователя логин и пароль и проверяет его правильность. Пароль считается правильным, если в нём содержится ровно три английские гласные буквы (гласными считать буквы a,e,i,o,u,y) и ровно такой же набор согласных (все буквы, кроме перечисленных шести), как в логине. Порядок и количество согласных также должно совпадать. Считается, что логин и пароль написаны в нижнем регистре. Не будет ошибкой, если вы все введённые символы логина и пароля, сразу приведете к нижнему регистру.
Пример: для логина “login” подойдут пароли “aaalgn” и “luagon“.
Если пароль правильный, функция должна вызвать коллбэк success, передав ему в качестве аргумента логин. А если пароль был неверный - failure, передав ему в качестве аргументов логин и сообщение об ошибке (в таком порядке). Сообщение об ошибке должно быть одним из трёх вариантов:

“Wrong number of vowels”, если в пароле неверное число гласных;
“Wrong consonants”, если в пароле набор согласных отличается от набора согласных логина;
“Everything is wrong”, если оба условия нарушены.
Также напишите функцию main(), которая вызывает написанную функцию так, чтобы в случае успеха она печатала “Привет, {логин}!”, а в случае ошибки – “Кто-то пытался притвориться пользователем {логин}, но в пароле допустил ошибку: {текст ошибки, большими буквами}.”.
Внимание! При вводе логина и пароля НЕ выводите подсказку для пользователя вида “Введите логин:”, так как это собьет с толку проверяющую систему.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.01.2018, 15:54
Ответы с готовыми решениями:

Коллбэки или проверка пароля
Вот просидел я с ней уже больше часа, а в итоге получился один бред. Добрые люди, помогите пожалуйста. Ваша задача – написать функцию...

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

Потоки или коллбэки?
Вопрос по структуре приложения. Потребовалось выполнение нескольких задач условно одновременно - выдавать звук в выходной поток и...

5
3 / 3 / 0
Регистрация: 02.01.2018
Сообщений: 9
31.01.2018, 21:20
Делай сам Господин Павлин.Такое ощущение,что вы не учитесь,просто списываете готовый код
1
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
31.01.2018, 21:57
Это не ощущение, это факт. Человек обалдевший.
1
67 / 64 / 3
Регистрация: 02.11.2019
Сообщений: 227
05.02.2020, 18:09
Да ладно, человек не понимает, а вы смеётесь
вот решение: Коллбэки или проверка пароля
2
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6
05.02.2020, 18:16
geargoose, есть чему улыбнуться. Например, тому, что теме два года
(Кстати, я, помниться, отправлял вам вопрос в личку.)
0
67 / 64 / 3
Регистрация: 02.11.2019
Сообщений: 227
05.02.2020, 18:34
У, тогда извиняюсь, не туда попал
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.02.2020, 18:34
Помогаю со студенческими работами здесь

Зачем нужны коллбэки?
Зачем нужны коллбэк функции,и когда их разумно применить?

Нужны ли коллбэки или это синтаксический сахарок сомнительно
Коллбэк - исполняемый код, передаваемый посредством указателя в функцию как аргумент. Обычно механизм коллбэков (касательно mbed)...

Почему BLE-коллбэки "перебивают" выполнение кода handler?
В своём приложении на Android я работаю с BLE. Делаю запросы к удалённому устройству и получаю от него асинхронные ответы в коллбэках. В...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru