|
Цикл без цикла
|
Я
|
|
JUST4LOL 04.03.21 - 09:36 | Кто для примера может написать цикл без цикла с использованием операторов перехода? |
Aleksey 1 - 04.03.21 - 09:38 | а в чем проблема?
|
Irbis 2 - 04.03.21 - 09:38 | goto не по феншую?
|
Aleksey 3 - 04.03.21 - 09:40 | chcp 1251 >nul
:Begin
if exist = "*.xml" (goto do) else (goto end)
:do
rem Что то делаем
goto Begin
:end
exit /b |
Конструктор1С 4 - 04.03.21 - 09:42 | ( 0) это зло. Понимаемость и отлеживаемость такого кода уходят на дно |
Aleksey 5 - 04.03.21 - 09:44 | ( 4) Ну да кто то не умеет их готовит, и поэтому называет злом.
По мне так зло эот пакетные запросы на 15 страниц. Но ничего, кое кто считает их стандартами |
Ненавижу 1С 6 - 04.03.21 - 09:49 | ( 0) нужен еще оператор условия |
Aleksey 7 - 04.03.21 - 09:52 | ( 6) Ну может быть ему вечный цикл нужен :) |
Irbis 8 - 04.03.21 - 09:52 | ( 6)бесконечный можно и без него |
Aleksey 9 - 04.03.21 - 09:53 | ( 8) Без операторов переходов, условий и циклов? |
Ненавижу 1С 10 - 04.03.21 - 09:54 | ( 9) без регистраций и СМС |
JUST4LOL 11 - 04.03.21 - 09:55 | Не, бесконечный не нужен)
|
Irbis 12 - 04.03.21 - 09:55 | ( 9) Да.
метка:
Тело цикла
гоуту на метка |
Bigbro 13 - 04.03.21 - 09:57 | mov eax 0x42h
rep:
dec eax
...
jnz rep
|
1Сергей 14 - 04.03.21 - 09:58 | Это лабораторка на первом курсе?
|
1Сергей 15 - 04.03.21 - 09:59 | или таки на собеседовании задание?
|
Irbis 16 - 04.03.21 - 09:59 | ( 14) это фальстарт пятницы |
Йохохо 17 - 04.03.21 - 10:01 | и только секция топика намекает чего же хотел тс)
|
dka80 18 - 04.03.21 - 10:02 | Процедура аааа()
ааа()
КонецПроцедуры
и валимся с переполнением стека вызовов через непродолжительное время)) |
fisher 19 - 04.03.21 - 10:03 | Первое, что приходит в голову про циклы "без циклов" - это рекурсия.
Ну, а в ассемблере ЕМНИП и нет операторов цикла. Только команды условных переходов.
|
GANR 20 - 04.03.21 - 10:04 | function Factorial(N: LongInt): LongInt;
begin
Factorial := 1;
if N <> 0
then Factorial := N*Factorial(N-1);
end;
begin
WriteLn(Factorial( 11));
end. |
Ненавижу 1С 21 - 04.03.21 - 10:05 | ну можно на Попытка и Перейти еще сделать )))
|
1Сергей 22 - 04.03.21 - 10:06 | ( 17) скорее никнейм четко намекает зачем |
JUST4LOL 23 - 04.03.21 - 10:08 | |
Bigbro 24 - 04.03.21 - 10:09 | ( 19) а как же LOOP
mov ecx, 5
start_loop:
...
loop start_loop |
Ненавижу 1С 25 - 04.03.21 - 10:12 | А еще есть оператор Выполнить которому передается строка, а поэтому формально там не будет циклов в исходном коде (они будут в строковом параметре)
|
fisher 26 - 04.03.21 - 10:15 | ( 24) Так это и есть команда условного перехода. Которая декрементирует регистр счетчика и прыгает по метке, если флаг обнуления АЛУ процессора не установился. |
Конструктор1С 27 - 04.03.21 - 10:16 | ( 5) пакетные запросы на 15 страниц нормально читаются. А один такой хитровыделанный цикл способен сделать код трудночитаемым и заложить ошибки, которые попробуй найти. Простой цикл понятен и прозрачен. В любой момент знаешь, на какой ты сейчас позиции и сколько их ещё. Тут же попробуй разберись. Плюс стек кода переполнить как два пальца об асфальт |
fisher 28 - 04.03.21 - 10:18 | ( 26) + Но да, она заточена под циклы со счетчиком итераций. Просто от других команд условного перехода она отличается только одним - дополнительным декрементом регистра счетчика. |
fisher 29 - 04.03.21 - 10:19 | ( 28) + Эдакий синтаксический сахар на микрокомандном уровне :) |
Йохохо 30 - 04.03.21 - 10:21 | ( 29) тогда экономили и такты и память, до сахара оставалось еще лет 30 Рекламное место пустует |
fisher 31 - 04.03.21 - 10:22 | ( 30) Память - да. А по тактам вряд ли там экономия. |
Йохохо 32 - 04.03.21 - 10:27 | ( 31) две загрузки в регистры и сравнение |
fisher 33 - 04.03.21 - 10:44 | ( 32) Команды ассемблера (машинные коды) - внутри выполняются как подпрограммы из микрокоманд процессора. Некоторые процессоры позволяют их даже перепрограммировать. И выполняются за разное количество тактов. Поэтому вовсе не обязательно, что одна сложная команда будет выполняться за меньшее количество тактов, чем две простые на которые ее можно разбить. |
Дык ё 34 - 04.03.21 - 11:14 | ( 28) фантазер
( 30) именно по тактам - начиная с какого-то поколения пентиумов условный переход начал работать эффективнее, чем loop, и компилляторы перестали его использовать |
Lama12 35 - 04.03.21 - 12:24 | ( 0) Мда...
А ведь когда-то, изучая Basic на Spectrum, не дойдя до циклов, изобретал их сам. Теперь народ спрашивает как их создать :-(
Про машину Тьюринга можно видимо и не упоминать сейчас. |
mikecool 36 - 04.03.21 - 13:02 | |
vde69 37 - 04.03.21 - 13:17 | Функция А(перем сч)
Если сч >= 1000 Тогда
Возврат Ложь
Иначе
// что-то делаем
Если НЕ А(сч+1) Тогда
Возврат Ложь;
КонецЕсли;
КонецЦикла;
Возврат Истина;
КонецФункции |
1Сергей 38 - 04.03.21 - 13:52 | ( 37)
Функция А(перем сч)
Если сч >= 1000 Тогда
Возврат Ложь
Иначе
 // что-то делаем
Возврат А(сч+1);
КонецЕсли;
КонецФункции |
Pro-tone 39 - 04.03.21 - 14:00 | 1. Рекурсия типа (37)
2. Переход по метке (перейти/goto) |
fisher 40 - 04.03.21 - 14:08 | |