Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Можно ли использовать цикл for() для организации ветвления?

19K
22 февраля 2007 года
Чубз
13 / / 24.10.2006
Придстоит тестирование на аттестацию в ВУЗе по технологии программирования, и этот вопрос немного смутил меня. Собственно, хотелось услышать мнение экспертов по этому поводу.
PS язык С
7.6K
22 февраля 2007 года
Darien
125 / / 15.01.2006
Да, можно. Пусть T - условие, тогда конструкция for( ; T ; ) { A; T = false; } эквивалентна конструкции if( T) { A; } , причём T не меняется в А.
25K
28 февраля 2007 года
oco
7 / / 26.02.2007
Более того, оператор ветвления можно реализовать и без for, например нужно:
 
Код:
if условие then a else b;

можно написать так:
Код:
type
  TProc = procedure;

var
   p:array[boolean] of  TProc;

procedure a;
begin
...
end;

procedure b;
begin
...
end;

begin
   p[false]:=@a;
   p[true]:=@b;
   .....

   p[условие];
end.
552
28 февраля 2007 года
Ivanhoe
373 / / 30.04.2006
В C эт, наверно, будет нечто вроде
 
Код:
void (*p)()[2]
)
991
28 февраля 2007 года
Zenhipster
157 / / 14.01.2005
for для ветвления использовать можно. Только это изврат )
конструкция IF все равно выдаст самый эффективный код.

Кстати указатели на функции иногда предпочтительней. Например, если условное выражение не меняется во время выполнения программы.
Пример такого выражения - наличие поддержки процессором инструкций MMX.
1
01 марта 2007 года
kot_
7.3K / / 20.01.2000
использовать можно. Как в принципе и приведенные выше коды. Только не забывайте одну простую весщ. Можно прыгать с крыши дома - но не всем это делать рекомендуется. Писать такую фигню в реальных проектах - лучше не надо.
25K
01 марта 2007 года
oco
7 / / 26.02.2007
Цитата: kot_
использовать можно. Как в принципе и приведенные выше коды. Только не забывайте одну простую весщ. Можно прыгать с крыши дома - но не всем это делать рекомендуется. Писать такую фигню в реальных проектах - лучше не надо.


Я несколько раз использовал такую фигню в реальных проектах. То, что в моем посте, называется - таблица функций. Очень удобно, когда вариантов не два, как описано, а много.

292
01 марта 2007 года
Matush
726 / / 14.01.2004
Цитата: kot_
использовать можно. Как в принципе и приведенные выше коды. Только не забывайте одну простую весщ. Можно прыгать с крыши дома - но не всем это делать рекомендуется. Писать такую фигню в реальных проектах - лучше не надо.



Почему не надо? Можешь сказать?
У меня прога к примеру работает с флешом. От флеша команды я получаю как LPSTR. Я бы мог в if'e сверять эту строку со всеми возможными. Но ведь намного проще и читабельнее код с использованием таблицы функций, которые надо запустить.

240
01 марта 2007 года
aks
2.5K / / 14.07.2006
он имел ввиду for для ветвления по всей видимости,а не указатели на функции )
1
01 марта 2007 года
kot_
7.3K / / 20.01.2000
Цитата: aks
он имел ввиду for для ветвления по всей видимости,а не указатели на функции )


Да имелось ввиду сабж темы.

292
01 марта 2007 года
Matush
726 / / 14.01.2004
Возможно я не так понял сабж?
Кто-то может привести пример использования for для ветвления, более чем
 
Код:
for(int x=0; x<n; x++)
  if(A[x])
    b(); // или еще как-то
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог