Здравствуйте, PPA, Вы писали:
PPA>Вот как умеют использовать циклы программисты из Oracle:
PPA>
PPA> for c1 in (select x_seq.nextval nv from dual) loop
PPA> :new.f1_id := c1.nv;
PPA> end loop;
PPA>
PPA>p.s. PPA> В Oracle в таблице dual _всегда_ одна запись!
Мимо кассы. В x_seq.nextval, скорее всего одна запись — если это последовательность. Что из приведённого очевидно, но не доказано.
А в SELECT ... FROM DUAL будет столько записай, сколько нужно. Например, если x_seq.nextval это функция, возвращающая массив.
Нифига, пропала проверка на тройку (смотрим границы цикла):
ZS>
ZS> for(j = 0; j < 4; j++)
ZS> {
ZS> switch(j)
ZS> {
ZS> case 0:
ZS> // Действие 1
ZS> break;
ZS> case 1:
ZS> // Действие 2
ZS> break;
ZS> case 2:
ZS> // Действие 3
ZS> break;
ZS> case 3:
ZS> // Действие 4
ZS> break;
ZS> default:
ZS> // Действие по умолчанию
ZS> }
ZS> }
ZS>
Но нормальный программист конечно сократит до такого:
for(j = 0; j < 4; ++j) // Помним, что в некоторых случаях префиксная форма эффективней!! :)))))
{
switch(j)
{
case 0:
case 1:
case 2:
case 3:
default:
break;
}
}
Мы то не лыком шиты
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
It is always bad to give advices, but you will be never forgiven for a good one.
Oscar Wilde
Re[2]: Необычный цикл
От:
Аноним
Дата:
18.05.06 08:39
Оценка:
Здравствуйте, Sonic, Вы писали:
S>Здравствуйте, trump-card, Вы писали:
S>Был реальный случай, по фирме в рассылке ходил этот перл
S>int i = 2;
S>if ( i == 1 ) S> ......... S>if ( i == 2 ) S> .........
S>между обьявлением переменной и if-ом ничего не было.
По-моему это просто вариант conditional compilation
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, trump-card, Вы писали:
А>Хм. Я бывает тоже пишу такие циклы, но примерно в таком контексте, если грубо и упрощенно:
А>
А>ParentClass * cl = NULL;
А>for (int i = 0; i < 4; i++)
А>{
А> switch (i)
А> {
А> case 0:
А> cl = m_pChild0;
А> break;
А> case 1:
А> cl = m_pChild1;
А> break;
А> case 2:
А> cl = m_pChild2;
А> break;
А> case 3:
А> cl = m_pChild3;
А> break;
cl->>Operation (...);
А>}
А>
А>
А не проще написать так:
m_pChild0->Operation (...);
m_pChild1->Operation (...);
m_pChild2->Operation (...);
m_pChild3->Operation (...); ?
Или уж так:
ParentClass *cl[4] = {m_pChild0, m_pChild1, m_pChild2, m_pChild3};
for( int i=0; i<4; i++ )
cl[i]->peration (...);
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, trump-card, Вы писали:
А>Хм. Я бывает тоже пишу такие циклы, но примерно в таком контексте, если грубо и упрощенно:
А>
А>ParentClass * cl = NULL;
А>for (int i = 0; i < 4; i++)
А>{
А> switch (i)
А> {
А> case 0:
А> cl = m_pChild0;
А> break;
А> case 1:
А> cl = m_pChild1;
А> break;
А> case 2:
А> cl = m_pChild2;
А> break;
А> case 3:
А> cl = m_pChild3;
А> break;
cl->>Operation (...);
А>}
А>
А>
а чем хуже
m_pChild0->Operation (...);
m_pChild1->Operation (...);
m_pChild2->Operation (...);
m_pChild3->Operation (...); ????
ну или на крайняк, если те надо твой пейреннт между твоими строками
ParentClass * cl = NULL;
(cl = m_pChild0)->Operation (...);
(cl = m_pChild1)->Operation (...);
(cl = m_pChild2)->Operation (...);
(cl = m_pChild3)->Operation (...); ????
то вы не писали под тормозные девайсы =))) с ограниченым размером классов
попробуйде j2me
Здравствуйте, ekamaloff, Вы писали:
E>Здравствуйте, ZevS, Вы писали:
E>Нифига, пропала проверка на тройку (смотрим границы цикла):
Дык в том-то и дело!
Re[3]: Необычный цикл
От:
Аноним
Дата:
18.05.06 09:33
Оценка:
Здравствуйте, yevgeny.savenko, Вы писали:
YS>Здравствуйте, Аноним, Вы писали:
А>>Здравствуйте, trump-card, Вы писали:
А>>Хм. Я бывает тоже пишу такие циклы, но примерно в таком контексте, если грубо и упрощенно:
А>>
А>>ParentClass * cl = NULL;
А>>for (int i = 0; i < 4; i++)
А>>{
А>> switch (i)
А>> {
А>> case 0:
А>> cl = m_pChild0;
А>> break;
А>> case 1:
А>> cl = m_pChild1;
А>> break;
А>> case 2:
А>> cl = m_pChild2;
А>> break;
А>> case 3:
А>> cl = m_pChild3;
А>> break;
cl->>>Operation (...);
А>>}
А>>
А>>
YS>а чем хуже YS>m_pChild0->Operation (...); YS>m_pChild1->Operation (...); YS>m_pChild2->Operation (...); YS>m_pChild3->Operation (...); ????
YS>ну или на крайняк, если те надо твой пейреннт между твоими строками YS>ParentClass * cl = NULL; YS>(cl = m_pChild0)->Operation (...); YS>(cl = m_pChild1)->Operation (...); YS>(cl = m_pChild2)->Operation (...); YS>(cl = m_pChild3)->Operation (...); ????
YS>то вы не писали под тормозные девайсы =))) с ограниченым размером классов YS>попробуйде j2me
Ну дык обычно ради одного вызова функции такого не делаю, конечно. Просто Operation () — это обычно строк десять кода минимум.
А вот вариант
ParentClass *cl[4] = {m_pChild0, m_pChild1, m_pChild2, m_pChild3};
for( int i=0; i<4; i++ )
cl[i]->peration (...);
дествительно лучше смотрится. Че то мне массивы в голову не приходили
Здравствуйте, Аноним, Вы писали:
...
А>Ну дык обычно ради одного вызова функции такого не делаю, конечно. Просто Operation () — это обычно строк десять кода минимум. А>А вот вариант А>ParentClass *cl[4] = {m_pChild0, m_pChild1, m_pChild2, m_pChild3}; А>for( int i=0; i<4; i++ ) А>cl[i]->peration (...); А>дествительно лучше смотрится. Че то мне массивы в голову не приходили
А произвести функциональную декомпозицию в голову не приходило?
// Действие 1
.......
// Действие 2
.......
// Действие 3
.......
Re[5]: Необычный цикл
От:
Аноним
Дата:
18.05.06 09:58
Оценка:
Здравствуйте, ZevS, Вы писали:
ZS>Здравствуйте, Аноним, Вы писали: ZS>...
А>>Ну дык обычно ради одного вызова функции такого не делаю, конечно. Просто Operation () — это обычно строк десять кода минимум. А>>А вот вариант А>>ParentClass *cl[4] = {m_pChild0, m_pChild1, m_pChild2, m_pChild3}; А>>for( int i=0; i<4; i++ ) А>>cl[i]->peration (...); А>>дествительно лучше смотрится. Че то мне массивы в голову не приходили
ZS>А произвести функциональную декомпозицию в голову не приходило?
похоже, что нет
и... а что это такое? Что то у меня с терминологией...