Re: Здраствуйте не поможите правельно создать процедуру
Доброго времени суток! On 11 нояб, 11:48, WildSery wrote: > > А вот контрпример к твоему правилу: > > while (some calculations) do > i = i + 1; > begin > -- А тут тоже чёта делаем > end > > begin, "на глазок" и с точки зрения твоего видения синтаксиса, относится к > while, тогда как нет, не относится. В общем, приходим к тому, что для любого оператора цикла/условия желательно сразу использовать составной блок вне зависимости от количества операторов. Я лично так и делаю. -- С уважением, Евгений
Re: Здраствуйте не поможите правельно создать процедуру
On Fri, 31 Oct 2008 12:24:12 +0300, Dmitri Kuzmenko <[EMAIL PROTECTED]> wrote: > while do begin > ... > ... > ... еще 10 строк > ... > ... > end; > > это я еще сюда отступов добавил. А так, ты уверен, что не проглядел в > середине этого текста вот такую хрень: > if then begin > end; Это вообще не аргумент. Потому что сугубо субьективен. Да, я уверен. Потому что отступ. И мой END всегда находится на уровне того оператора, который завершает (WHILE). А вот контрпример к твоему правилу: while (some calculations) do i = i + 1; begin -- А тут тоже чёта делаем end begin, "на глазок" и с точки зрения твоего видения синтаксиса, относится к while, тогда как нет, не относится. Когда такое написание может быть обосновано? Да к примеру с конструкцией WHEN. Которая затем может быть убрана из кода. Или не убрана. Или даже так: while (some complicated calculations with changing values - for ex., executing stored proc) do; begin -- А тут тоже чёта делаем end -- Сергей Смирнов.
Re: Здраствуйте не поможите правельно создать процедуру
Dmitri Kuzmenko пишет: Правильные пацаны давно составные конструкции одними отступами отмечают (Python, Haskell). то же дерьмо. я это уже кушал в Mumps. F I=0..10 DO .S A=I... Из реального проекта: def walk_devices(self): logging.info('Scan for timeouted device') try: from reciver.save2base import _connect_curs curs = _connect_curs() dt = datetime.now() - timedelta(seconds=SEC_TIMEOUT) curs.execute(sel_timrout_devices, dt) for row in curs: dev_id = row[0] logging.info('Timeout for device %d', dev_id) do_device(curs, dev_id) self.start() except: logging.exception('Error for scan device') П.С. И в С и в Pascal-е всегда писали и пишем именно в осуждаемом стиле. да никогда такого не было, чтобы begin писали на той же строке что и if, when и так далее. Это какой-то сишник один раз применил, а потом началось... Я для паскаля такой стиль придумал ещё до плотного знакомства с С. :) Именно из соображений компактности по вертикали - вспомни сколько строк текста вмещалось в редакторе Borland Pascal-я? ~20 а то и меньше. Ну а в режиме отладки так вообще если строк 10 поместится - щастье. Так что такой компактный стиль вполне оправдывался. :) -- Александр Замараев
Re: Здраствуйте не поможите правельно создать процедуру
Доброго времени суток! On 5 нояб, 10:27, Dmitri Kuzmenko wrote: > > потому что не видишь. очень жаль. сочувствую тем, кто будет > читать твой код (если будет). Так и помру неучем :) К счастью, мой код не представляет особенной ценности для потомков. Кстати, в Обероне, насколько я в курсе, Вирт ввел обязательный END для WHILE\IF-блоков, и BEGIN там уже не нужен. Т.е. получаем WHILE (condition) DO END IF (condition) THEN ELSE END или IF (condition) THEN ELSEIF (condition) THEN END Заодно и решена проблема неопределенного Else. -- С уважением, Евгений
Re: Здраствуйте не поможите правельно создать процедуру
Hello, Евгений! Кузнецов Евгений wrote: По while, вестимо. звездец... То есть? Если в любом if/while/for/repeat всегда будет begin, то не все ли равно где - на той же строке или на следующей? Не понимаю Вашей категоричности. потому что не видишь. очень жаль. сочувствую тем, кто будет читать твой код (если будет). -- Dmitri Kouzmenko, www.ibase.ru, (495) 953-13-34
Re: Здраствуйте не поможите правельно создать процедуру
Hello, Tonal! Tonal wrote: Правильные пацаны давно составные конструкции одними отступами отмечают (Python, Haskell). Так что и холиваров никаких из за подобных глупостей там нет. :) то же дерьмо. я это уже кушал в Mumps. F I=0..10 DO .S A=I... П.С. И в С и в Pascal-е всегда писали и пишем именно в осуждаемом стиле. да никогда такого не было, чтобы begin писали на той же строке что и if, when и так далее. Это какой-то сишник один раз применил, а потом началось... -- Dmitri Kouzmenko, www.ibase.ru, (495) 953-13-34
Re: Здраствуйте не поможите правельно создать процедуру
Dmitri Kuzmenko пишет: Керниган идет лесом (а еще конкретнее - в задницу). Иногда очень умные Истину глаголешь! Да и вообще все эти begin/end-ы и кривые скобочки не более чем синтаксический мусор! Правильные пацаны давно составные конструкции одними отступами отмечают (Python, Haskell). Так что и холиваров никаких из за подобных глупостей там нет. :) П.С. И в С и в Pascal-е всегда писали и пишем именно в осуждаемом стиле. Для более компактного представления алгоритма. Символов табуляции не используем. За коверканье отступов выговор, с занесением. :) -- Александр Замараев
Re: Здраствуйте не поможите правельно создать процедуру
Доброго времени суток! On 31 окт, 12:24, Dmitri Kuzmenko wrote: > Керниган идет лесом (а еще конкретнее - в задницу). Иногда очень умные > люди порят полную чушь. Или, их мудрые высказывания интерпретируют ровно > наоборот. > Объясни мне, как ты увидишь, где начинается блок, если написано так\ > > while do begin > ... > ... > ... еще 10 строк > ... > ... > end; По while, вестимо. > > это я еще сюда отступов добавил. А так, ты уверен, что не проглядел в > середине этого текста вот такую хрень: > if then begin > end; > > ? То есть? Если в любом if/while/for/repeat всегда будет begin, то не все ли равно где - на той же строке или на следующей? Не понимаю Вашей категоричности. -- С уважением, Евгений
Re: Здраствуйте не поможите правельно создать процедуру
> > while ... do > begin > ... > ... > if ... then > begin > ... > ... > end; > ... > end; > Именно так требую форматировать все программы уже мног лет. Подобное форматирование предлагал еще Вирт - кажется он имел некое отношение к паскалю :) Я показываю такое форматирование потенциальному новому сотруднику и прошу объяснить а почему собственно, если может объяснить но это дополнительный + :)
Re: Здраствуйте не поможите правельно создать процедуру
Hello, Ded! Ded wrote: Иногда очень умные люди порят полную чушь. Точно-точно. Я за собой это в последнее время тоже всё чаще замечаю. я про себя писал? тоже могу отмочить :-) -- Dmitri Kouzmenko, www.ibase.ru, (495) 953-13-34
Re: Здраствуйте не поможите правельно создать процедуру
Dmitri Kuzmenko wrote: Иногда очень умные люди порят полную чушь. Точно-точно. Я за собой это в последнее время тоже всё чаще замечаю. Или, их мудрые высказывания интерпретируют ровно наоборот. А уж про это и говорить нечего. -- Regards. Ded.
Re: Здраствуйте не поможите правельно создать процедуру
Dmitri Kuzmenko: >Иногда очень умные люди порят полную чушь. Они иногда и пишут так :-) while (fb_interpret(s + 1, sizeof(s) - 1, &vector)) { translate_cp(s); alice_output("%s\n", s); }
Re: Здраствуйте не поможите правельно создать процедуру
Dmitri Kuzmenko wrote: В общем, если форматирование ПОЗВОЛЯЕТ неверно интерпретировать структуру кода, то ну его нахрен такое форматирование. ну чего вы спорите то? У вас в редакторе нету сворачивания блоков кода и подсветки синтаксиса? Пишите главное чтоб удобно было тому кто пишет. остальное все условности.
RE: Здраствуйте не поможите правельно создать процедуру
Привет. Засунь в отдельную процедуру/вьюху for select gd.nm,gd.fprn, unt.nm as unt, gd.qinp, gd.prub as prub,sec.nm as sec from gd inner join unt unt on (gd.id_unt = unt.id) inner join sec sec on (gd.id_sec = sec.id) Order By id_sec, gd.nm INTO :nm,:fprn,:unt,:qinp,:prub,:sec /* для процедуры */ Ну а в основной процедуре проверяй условия и накладывай свое дополнительное where. Что-то вроде: If (fprn>0) then For select nm,unt,qinp,prub,sec From subprocedure Where fprn=1 Into :nm,:unt,:qinp,:prub,:sec Do suspend; Else For select nm,unt,qinp,prub,sec From subprocedure Into :nm,:unt,:qinp,:prub,:sec Do suspend; WBR, Dmitry Beloshistov AKA [-=BDS=-] __ Eioi?iaoey io ESET NOD32 Antivirus, aa?ney aacu aaiiuo neaiaoo? ae?onia 3568 (20081030) __ Niiauaiea i?iaa?aii i?ia?aiiie ESET NOD32 Antivirus. http://www.esetnod32.ru