|
Нужна задачка, которую можно сделать только бесконечным циклом | ☑ | ||
---|---|---|---|---|
0
rutony
23.09.11
✎
10:42
|
Без рекурсий. Без счетчиков.
|
|||
1
Morphius
23.09.11
✎
10:43
|
Тебе сюда
v8: О применении "Пока Истина Цикл" |
|||
2
SeregaMW
23.09.11
✎
10:45
|
(0) Тебе зачем? Разверни тему!
|
|||
3
Stim213
23.09.11
✎
10:46
|
Есть такая задачка, см в (1).
|
|||
4
ice777
23.09.11
✎
10:47
|
(0) ну, подвисон пк так реализуется ) если не усложнять.
|
|||
5
Morphius
23.09.11
✎
10:47
|
Тема для передачи про битву экстрасенсов.
|
|||
6
Tymoha
23.09.11
✎
10:49
|
(1), (3) неа - в ТС "ТОЛЬКО циклом" ...
|
|||
7
SeregaMW
23.09.11
✎
10:49
|
(4) Месть бухгалтерии за недоплаченную зарплату )))
|
|||
8
aleks-id
23.09.11
✎
10:50
|
подсчет молекул водорода во вселенной не?
|
|||
9
extrim-style
23.09.11
✎
10:52
|
число пи рассчитай
|
|||
10
Stim213
23.09.11
✎
10:53
|
ЗППрограммиста = ПолучитьЗППрограммиста();
отстатыщ = 100000; Пока ЗП <> Отстатыщ Цикл отстатыщ = ?(ПолучитьЗППрограммиста() = 100000,отстатыщ*2,отстатыщ); КонецЦикла; |
|||
11
zak555
23.09.11
✎
10:53
|
разложение в ряд
|
|||
12
Stim213
23.09.11
✎
10:54
|
Пока ЗППрограммиста <> Отстатыщ Цикл
|
|||
13
zak555
23.09.11
✎
10:54
|
разложение в ряд функции экспоненты около точки 0 =)
|
|||
14
jump if zero
23.09.11
✎
10:54
|
на шахаматную доске
на одну клетку кладем одно зернышко пшеницы , на другую два зернышка, на третью в 2 раза больше чем на втроую и т.д. ,сколько зернышек будет на последней клетке шахматной доски |
|||
15
zak555
23.09.11
✎
10:55
|
фигню сомтрозил в (13) =)
|
|||
16
SeraFim
23.09.11
✎
10:55
|
1. Нанести шампунь на влажные волосы
2. вспенить 3. смыть 4. повторить |
|||
17
Leksus
23.09.11
✎
10:58
|
(0) Подсчет размера множества натуральных чисел
|
|||
18
andrewks
23.09.11
✎
10:59
|
(9) если только _абсолютно точно_
(17) _без_ счётчиков (0) задача: обеспечить бесконечный вывод слова "Пятница!" в область сообщений. решение: Пока Истина Цикл Сообщить("Пятница!"); КонецЦикла; |
|||
19
rutony
23.09.11
✎
11:12
|
Да, просто спор образовался, на ящик пива. Что любую задачу можно реализовать без бесконечного цикла.
Я уверен что нет, не любую. Вот и нужен пример. |
|||
20
aleks-id
23.09.11
✎
11:18
|
(19) любую
|
|||
21
Kookish
23.09.11
✎
11:18
|
(19) Зря ты так уверен. Бесконечный цикл должен когда-то закончиться. Для этого нужно, чтобы выполнилось какое-то условие. В зависимости от этого условия можно присвоить то или иное значение какой-нибудь переменной. Соответственно, можно то же самое получить при помощи цикла с условием.
Но ведь тут же не принято признавать, что ты не прав, не так ли? |
|||
22
Axel2009
23.09.11
✎
11:20
|
(21) имеется ввиду что без
Пока Истина Цикл не обойтись типа любую можно конвертнуть в определенный цикл от и до |
|||
23
H A D G E H O G s
23.09.11
✎
11:21
|
Обработка очереди сообщений окна Windows - вот вам бесконечный цикл.
|
|||
24
H A D G E H O G s
23.09.11
✎
11:21
|
Никогда окна на чистом API не писали штоле?
|
|||
25
rutony
23.09.11
✎
11:25
|
(1)
Не вижу ни одного примера который нельзя было сделать бы обычной рекурсией... (20) (21) Речь о конструкции Пока Истина Цикл, понятно что она когда то завершится, но нужно что бы шапка была именно такая. (23)(24) Нужен 1с, другие языки не подойдут Пока в голову пришла идея только про обработку ответа HTTPСоединения, но задача на слабую троечку... |
|||
26
Axel2009
23.09.11
✎
11:28
|
(25) вопрос ставится в быстродействии? или типа в 100 раз дольше работает, но можно обойтись без бесконечного? =)
|
|||
27
rutony
23.09.11
✎
11:33
|
(26) Вопрос в невозможности без него обойтись к каком то случае.
|
|||
28
Axel2009
23.09.11
✎
11:36
|
(27) ну тогда скорее всего проиграл ящик пива..
|
|||
29
PR
23.09.11
✎
11:36
|
(0) Такой нет.
|
|||
30
PR
23.09.11
✎
11:37
|
(19) Уверен, так придумай :))
|
|||
31
Kookish
23.09.11
✎
11:37
|
(25) Еще раз внимательно прочитай (21). Я понимаю, там много букв, но все-таки постарайся.
Пока Истина Цикл ... Если Условие Тогда Прервать; КонецЕсли; КонецЦикла; ВСЕГДА можно заменить на Перем = 1; Пока Перем = 1 Цикл ... Если Условие Тогда Перем = 0; КонецЕсли; КонецЦикла; |
|||
32
PR
23.09.11
✎
11:39
|
(31) Это два бесконечных цикла :))
|
|||
33
Lama12
23.09.11
✎
11:41
|
(0)Попробуй рекурсию заменить на цикл. Любая рекурсия может быть заменена на цикл. Вот там и будешь видеть применение.
|
|||
34
mikeA
23.09.11
✎
11:42
|
(31) это вопрос семантики. по-моему с точки зрения условия (0) данные конструкции идентичны. да они так и выглядят.
|
|||
35
Kookish
23.09.11
✎
11:45
|
(32) Тогда что такое не бесконечный цикл? Цикл со счетчиком? А цикл "Пока Условие Цикл" автоматически считать бесконечным?
|
|||
36
Lama12
23.09.11
✎
11:45
|
(33) Условие "только бесконечным циклом" - вытекает из того, что рекурсию нельзя использовать когда ограничена память.
|
|||
37
rutony
23.09.11
✎
11:46
|
(31) -> (25)
Речь про нормально синтаксически оформленный код, а не "индийский". Я почему то более чем уверен, что Вы так не пишите. Так что давайте не будет впадать в крайности. (36) +1, все к это и сводиться, нужен именно такой пример. |
|||
38
Inform
23.09.11
✎
11:46
|
(0) Попробуй в синтакс-помощнике поискать (именно поиском):
"Пока Истина Цикл" Вот самое простое например: Пока Истина Цикл ЭлементыФормы.Надпись.Значение = ТекущаяДата(); ОбработкаПрерыванияПользователя(); КонецЦикла; P.S.: Половина ящика с тебя :) |
|||
39
rutony
23.09.11
✎
11:52
|
(38) Отличный пример))
|
|||
40
aleks-id
23.09.11
✎
11:54
|
я надеюсь что автора (38) уже поперли оттуда? ))
|
|||
41
aleks-id
23.09.11
✎
11:56
|
(31) твой гомнокод можно легко заменить на
Пока НЕ Условие Цикл ... КонецЦикла; |
|||
42
Kookish
23.09.11
✎
11:56
|
Чувствую, начинает пахнуть холиваром. Предлагаю вам с друзьями остаться при своих и раздавить пиво в теплой дружеской обстановке. (39)
|
|||
43
rutony
23.09.11
✎
11:59
|
(41) Не "Твой гомнокод", а фирмы 1С, это вырезка из справки.
Если ты так реализуешь бесконечный цикл, мне тебя жаль. Думаю тема, закрыта, не стоит ее развивать. |
|||
44
Inform
23.09.11
✎
11:59
|
(40) за что?
|
|||
45
PR
23.09.11
✎
11:59
|
(35) IMHO
Бесконечный цикл - это цикл, который будет выполняться бесконечно, если в его теле ничего не делать, кроме заранее предусмотренного изменения счетчика цикла. Бесконечный цикл Счетчик = 0; Пока Счетчик = 0 Цикл Если ТемператураНаУлице() > 10 Тогда Счетчик = 1; КонецЕсли; КонецЦикла; Конечный цикл Счетчик = 0; Пока Счетчик = 0 Цикл Счетчик = Счетчик + 1; КонецЦикла; |
|||
46
aleks-id
23.09.11
✎
12:00
|
(43) ты бы для начала поглядел об чем я
|
|||
47
aleks-id
23.09.11
✎
12:02
|
(45) еще один гомнокодер
Пока НЕ ТемператураНаУлице() > 10 Цикл ...трампапам... КонецЦикла; |
|||
48
rutony
23.09.11
✎
12:04
|
(46) Сорри, думал Вы про (38)
|
|||
49
Sserj
23.09.11
✎
12:04
|
(25) Расчет статистики генератора случайных чисел, через сколько шагов получения случайного числа в определенном диапазоне будут выданы повторяющиеся значения.
|
|||
50
alxxsssar
23.09.11
✎
12:07
|
вижу только одно применение бесконечного цикла - показывать что то на форме, например температуру или текущее время, с обращением к внешнему событию. Другие задачи все равно должны выводить результат, а значит циклы должны рано-поздно заканчиваться. ИМХО бесконечный цикл этому противоречит.
|
|||
51
Axel2009
23.09.11
✎
12:07
|
(49) Пока Не СписокЗначений.НайтиПоЗначению(СлучайноеЧисло) = Неопределено Цикл
|
|||
52
Sserj
23.09.11
✎
12:10
|
(51) Ну так он фактически бесконечный, потому что СписокЗначений не определен завомо и может вообще никогда не найтись, если числа бесконечно большие и генератор бесконечно не повторяющийся :)
А вообще по сути любой сетевой сервер, ожидающий соединения висит в бесконечном цикле, пока к нему не постучатся или не завершат работу. |
|||
53
aleks-id
23.09.11
✎
12:11
|
(50) для этого существует ПодключитьОбработчикОжидания
|
|||
55
Fragster
гуру
23.09.11
✎
12:13
|
познание бесконечности требует бесконечного времени, а потому работай, не работай - всё едино (с) АБС
|
|||
56
Sserj
23.09.11
✎
12:14
|
(53) О блин истинный 1С-овец :)
А обработчик ожидания или таймер как работает? Уж не в бесконечном ли цикле он запрашивает время? |
|||
57
PR
23.09.11
✎
12:14
|
(56) LOL :))
|
|||
58
y22-k
23.09.11
✎
12:18
|
(56) он имел ввиду что толку от формы открытой с таким колдом все висеть будет
|
|||
59
alxxsssar
23.09.11
✎
12:21
|
(53) это понятно, просто единственный возможный вариант задачи по моему
|
|||
60
aleks-id
23.09.11
✎
12:24
|
(56) открой для себя волшебный и удивительный мир прерываний
|
|||
61
Sserj
23.09.11
✎
12:30
|
(60) Да конечно, такой волшебный прям как этот форум :)
А кто же бесконечно ходит и смотрит уж не пора ли разбудить прерванный поток то? А вообще кстати любую рекурсивная программа может запросто упасть, все зависит только от количества свободной памяти, и вообще то это накладно, постоянно копировать области память, так что бесконечный цикл просто быстрее и эффективнее рекурсии. |
|||
62
PR
23.09.11
✎
12:33
|
(61) Дружище, почитай про то, что такое процессор и как он работает :))
|
|||
63
aleks-id
23.09.11
✎
12:40
|
(61) хоть бы книжки почитал, прежде чем так позориться
|
|||
64
Sserj
23.09.11
✎
12:43
|
(62)(63) Не пытайтесь показаться сверх умными дружищи :)
Как минимум азы схемотехники мы все проходили и как оно там работает на физическом уровне все прекрасно знаем. Но неужели вы забыли что мы работаем над софтовыми задачами а не над железными, да еще в замечательной среде виндовз, которая нифига вам не даст работать с железом на прямую, она сама там чего то напрерывается а все ваши процессы висят в очереди и тупо постоянно опрашиваются когда он там должен проснуться и если наступило(прошло) время просыпания поставятся в поток выполнения. |
|||
65
EvgeniuXP
23.09.11
✎
12:43
|
при активации вкладки активировать вкладку :)
|
|||
66
aleks-id
23.09.11
✎
12:45
|
(64) так вот опрашиваются они как раз через те же прерывания, но никак не в бесконечном цикле
|
|||
67
Sserj
23.09.11
✎
12:56
|
(66) "Через прерывания" чего именно? Где именно планируются эти прерывания в "железе" или таки есть некий диспетчер у операционки, который вечно обходит таблицу процессов и решает кому сейчас пойти на выполнение.
|
|||
68
PR
23.09.11
✎
13:06
|
(64) Прочитай (63) _вдумчиво_, он прав.
|
|||
69
PR
23.09.11
✎
13:07
|
(67) Пля, у процессора есть _железячная_ поддержка прерываний, которая используется операционкой. Почитай книжки.
|
|||
70
Sserj
23.09.11
✎
13:12
|
(69) У процессора есть и что это конкретно дает приложениям запущенным в операционной системе?
Какая программа в среде виндовз кроме драйверов работающих в режиме ядра может напрямую управлять этими прерываниями? Все процессы включены в некую таблицу в памяти операционки, которую вечно обходит некий диспетчер и решает запускать их или нет. |
|||
71
PR
23.09.11
✎
13:15
|
(70) Почитай книжки.
|
|||
72
Ненавижу 1С
гуру
23.09.11
✎
13:16
|
определение "бесконечного цикла" дайте
|
|||
73
vmv
23.09.11
✎
13:20
|
(0) вопрос дурацки поставлен.
задачи решают не бесконечным циклом, а циклом без итератора. Вот так задал бы вопроос я Нужна задачка, которую можно сделать только циклом без итератора |
|||
74
fisher
23.09.11
✎
13:20
|
(72) Цикл, завершение которого не предусмотрено в самом операторе цикла.
|
|||
75
Sserj
23.09.11
✎
13:20
|
(71) Читал, много, могу даже направление определить - тематика "диспетчер операционной системы". И что даже больше скажу - глядел в иходниках древней версии линуксового ядра на предмет изучения кокраз этого самого диспетчера. Ну так не поверишь - обычный бесконечный цикл.
|
|||
76
Krendel
23.09.11
✎
13:22
|
(73) Часы разве не бесконечным циклом работают?
|
|||
77
ado
23.09.11
✎
13:26
|
(19) Ты попал на пиво: wiki:Теорема_Бёма_%E2%80%94_Якопини
|
|||
78
Ненавижу 1С
гуру
23.09.11
✎
13:28
|
(74) такая задача не сможет завершится (если конечно войдет в цикл)
|
|||
79
fisher
23.09.11
✎
13:29
|
(76) Не. Аппаратная схема таймера генерит аппаратные прерывания, при обработке которых и происходит изменение времени компа. Можно сказать, что таймер на уровне аппаратной реализации работает в бесконечном цикле. А компьютерное время - нет.
|
|||
80
Krendel
23.09.11
✎
13:31
|
(79) Сделай програмное прерывание на ассемблеере или это нереально?
|
|||
81
aleks-id
23.09.11
✎
13:33
|
(70) объясняю на пальцах. пишем в программе код, который обрабатывается при наступлении некоего события (в нашем случае прерывания) и забываем про него, потому что этот код выполнится обязательно при наступлении события. понимаешь? не надо в цикле ничего обходить.
|
|||
82
aleks-id
23.09.11
✎
13:35
|
(79) таймер не работает в цикле. таймер тупо "тикает", ибо цикл подразумевает собой наличие конструкции jmp begin
|
|||
83
aleks-id
23.09.11
✎
13:36
|
(75) код в студию
|
|||
84
Sserj
23.09.11
✎
13:48
|
(80) Винда не даст физически запустить приложение обращающееся к железу на прямую. Хотя можешь конечно запустить вне винды и вообще вне операционки, но пользы от этого не много.
(81) Так операционка будет просто за место твоего приложения в цикле что-то там обходить, а по сути любое приложение это расширение операционки, потому они и называются "приложения к операционной системе", а сокращенно "приложение", так что по сути твое расширение к операционной системе будет просто использовать ее бесконечные циклы. (83) cd /usr/src и читать, на всю жизнь хватит, это было не меньше 10 лет назад, сейчас уже нет, просто в памяти отложилось. |
|||
85
Sserj
23.09.11
✎
13:53
|
+(84) Можно точнее так:
cd /usr/src/sys/kern/Attic/sched_core.c |
|||
86
aleks-id
23.09.11
✎
13:54
|
(81) ясен пень, если операционка написана косоруким гомнокодером, то она будет в цикле все обходить. что касается невозможности запуска приложения, которое обращается напрямую к железу, то тут ты тоже облажался, ибо драйвер устройства по сути своей тоже является приложением.
|
|||
87
fisher
23.09.11
✎
13:55
|
(80) Ничего не понял. Зачем мне делать программное прерывание и для чего? Программные прерывания - это всего лишь удобный способ вызова системных подпрограмм, которые удобно использовать в разных программах.
|
|||
88
Sserj
23.09.11
✎
13:57
|
(86) Драйвер не является "обычным" приложением, он работает в режиме ядра, это несколько меняет для него правила игры. И я об этом уже писал в (70)
|
|||
89
aleks-id
23.09.11
✎
13:58
|
(86) к (84)
|
|||
90
aleks-id
23.09.11
✎
14:00
|
(88) тоесть в (70) ты не веришь, что обычное приложение, сосущее на третьем кольце, может работать с прерываниями???
|
|||
91
Sserj
23.09.11
✎
14:13
|
(90) Именно это я и говорю, обычные приложения работающие в виндовз (заметьте именно виндовз) не имеют доступа к физическому оборудованию. Все идет только через API, а вот как это реализованно с той стороны этого самого АПИ большой вопрос, но не думаю что планировщик винды очень сильно идеологически отличается от юниксовых.
|
|||
92
aleks-id
23.09.11
✎
14:35
|
(91) а зачем приложению иметь доступ к оборудованию? я где-то об этом говорил? и кто мешает приложению в процессе запуска и инициализации задействовать драйвер?
|
|||
93
fisher
23.09.11
✎
15:30
|
Народ. Вы как в той притче про слепых и слона.
Хоть бы не позорились. |
|||
94
Steel_Wheel
23.09.11
✎
15:35
|
(0) Симулятор жизни не предлагать?
|
|||
95
vladenoff
23.09.11
✎
15:45
|
Использую:
Пока Истина Цикл .... Если <Условие> Тогда прервать; КонецЕсли; КонецЦикла использую, когда условие повторного повторения (вхождение в цикл) должно проверяться в конце алгоритма самого цикла. Это обеспечит их выполнения хотя бы раз. В паскале были конструкции "While do..." и "reaped until", вот второй конструкции у 1С нету. Её заменяю "Пока Истина Цикл ...." заменить можно, но наверное гемора больше. Пришлось бы, наверное, указывать булевую переменную, типа "ПрошлоРазЦикл". |
|||
96
ado
23.09.11
✎
16:02
|
(95) Больше, не больше, но, если код не твой -- задересси условие выхода искать. Лучше так:
|
|||
97
ado
23.09.11
✎
16:06
|
Впрочем, вопрос то не в том, как лучше. Вопрос в том, есть ли такая задача, для которой условие(я) выхода из цикла НЕВОЗМОЖНО прописать в заголовке, можно сделать только бесконечным циклом с брейками. Ответ, такой задачи нет и это математически доказано. Топикстартер должен ящик пива.
|
|||
98
likesport
23.09.11
✎
16:20
|
А как на счет числа Пи?
|
|||
99
Fragster
гуру
23.09.11
✎
16:22
|
(96) когда 1сники научатся тому, что булевым переменным можно по нормальному присваивать значения, а не только Истина/Ложь?
|
|||
100
aleks-id
23.09.11
✎
21:01
|
сотка
|
|||
101
aleks-id
23.09.11
✎
21:02
|
(99) взять и поотрывать руки некоторым...
|
|||
102
Pasha_mix
24.09.11
✎
01:59
|
(0) запустил поиск "Пока Истина Цикл" в типовой БП... Дофига примеров.
|
|||
103
Pasha_mix
24.09.11
✎
02:01
|
Пока Истина Цикл
ПутьККаталогу = КаталогВременныхФайлов () + Идентификатор + строка(Индекс) + "\"; КаталогНаДиске = Новый Файл(ПутьККаталогу); Если НЕ КаталогНаДиске.Существует() Тогда СоздатьКаталог(ПутьККаталогу); Возврат ПутьККаталогу; КонецЕсли; Индекс = Индекс + 1; КонецЦикла; ------------------------------ Пока Истина Цикл Если ТекущийЭлемент_HTML.tagName = "BODY" Тогда Возврат Неопределено; ИначеЕсли ТекущийЭлемент_HTML.tagName = НазваниеТега Тогда Возврат ТекущийЭлемент_HTML; Иначе ТекущийЭлемент_HTML = ТекущийЭлемент_HTML.parentNode; КонецЕсли; КонецЦикла; |
|||
104
orefkov
24.09.11
✎
18:24
|
(0)
Учитывая, что любая рекурсия сама есть цикл + стек, крайне странно желание найти задачу, решаемую циклом, но не решаемую циклом со стеком. |
|||
105
Escander
24.09.11
✎
18:30
|
(0) нет рекурсионной задачи которую нельзя решить циклом.
Если так нужно задачу - найдите точное значение числа Пи |
|||
106
s410
24.09.11
✎
22:09
|
Нахождение числа ПИ, вечная тема.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |