Страница 2 из 2
Добавлено: 15.10.2007 15:05:15
Alexander
ev писал(а):с логической точки зрения более правильнее отказаться от от do
т.к. begin и end - это границы блока
без них может выполнятся цикл
А я это и предлагаю. Только писать не begin (начать), а do (делать),
компактнее. Или сократить begin до трёх букв - beg. Но это всё мелочи.
Добавлено: 15.10.2007 15:24:11
ev
или заменить
begin и
end на
{ и
} ?
это ведь еще компактнее

Добавлено: 15.10.2007 15:29:52
bw
Или ограничиться отступами для блока, как в Python

.
Хотя, без дураков, мне нравится подход в Python, он заставляет писать читаемый код

.
..bw
Добавлено: 16.10.2007 14:18:39
Bonart
bw писал(а):Хотя, без дураков, мне нравится подход в Python, он заставляет писать читаемый код
Еще лучше как в Хаскелле.
Хочешь - пиши в фигурных скобках через точку с запятой
Хочешь - с отступами
Добавлено: 16.10.2007 14:30:38
bw
Так тоже ничего. Я просто Haskell даже не видел

. Но мне как-то сподручнее, что ли, фигурные скобки использовать для комментирования или для задания словаря (Python):
Код: Выделить всё
value = {'a': 1, 'b': 2, 'c': 3}
print value['a'] # -> 1
print value['b'] # -> 2
print value['c'] # -> 3
print value[1] # -> исключение
..bw
Добавлено: 16.10.2007 14:59:00
Bonart
bw
А Хаскелле отсупами разрешено заменять почти любые перечисления в фигурных скобках через точку с запятой

Добавлено: 23.10.2007 09:19:56
Bonart
По зрелом размышлении предлагаю следующие варианты цикла с параметром:
1. С дискретным параметром:
for параметр[:тип] := выражение [down]to конечное_значение [step шаг] do
список_операторов
end
2. C произвольным параметром:
for параметр[:тип] := выражение next выражение while логическое_выражение do
список_операторов
end
3. С итерацией по множеству:
for параметр[:тип] in множество do
список_операторов
end
Что общего у всех вариантов цикла с параметром - параметр локализуется в цикле (его не видно ни до ни после), на каждой итерации в теле цикла является константой. Это позволяет создавать с одной стороны более прозрачный, с другой - лучше оптимизированный код.
Выражение после next используется каждый раз для получения нового значения параметра. В нем можно (и обычно нужно) использовать его значение на предыдущей итерации.
Например, for i:integer:=1 next i+1 while i<10 do write i; end
Цикл с итерацией по множеству хорош для обслуживания разнообразных коллекций, а также для оптимизаций, связанных с порядком итераций - в этом варианте он неопределен.
Цикл с дискретным параметром отличается лаконизмом, прозрачностью и хорошими возможностями для оптимизации.
По опыту Ады do уже является открывающей операторной скобкой.
Добавлено: 23.10.2007 10:24:35
bw
> По опыту Ады do уже является открывающей операторной скобкой.
А если нужен только один оператор в теле цикла (как в последнем примере), то "end" все равно придется ставить?
..bw
Добавлено: 23.10.2007 11:16:32
Bonart
bw писал(а):А если нужен только один оператор в теле цикла (как в последнем примере), то "end" все равно придется ставить?
Нет!
Почему смотри здесь
http://freepascal.ru/forum/viewtopic.php?t=2808
Добавлено: 23.10.2007 11:42:14
ev
А если нужен только один оператор в теле цикла (как в последнем примере), то "end" все равно придется ставить?
можно do убрать например