Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.11.17;
Скачать: CL | DM;

Вниз

Проблема с For i:=... to ....   Найти похожие ветки 

 
denmin   (2003-11-04 15:02) [0]

Можно ли в For задать шаг.


 
Anatoly Podgoretsky   (2003-11-04 15:03) [1]

Нет


 
Song   (2003-11-04 15:04) [2]

For i:=0 to .. Do
IF Odd(i) then ..


 
ZEE   (2003-11-04 15:19) [3]

как вариант:
for i:=Low(MyArray) to High(MyArray) do
begin
j:=i*2;
MyArray[j]:=...; //каждый второй
end;


 
Sodom   (2003-11-04 15:21) [4]

Можно так:
// надо
for i:=10 to 100 step 10
// делай так
for i:=1 to 10 do begin
k:=i*10;
// работаем с k
end;


 
Song   (2003-11-04 15:25) [5]

2Sodom © (04.11.03 15:21) [4]
Молодец! :)


 
denmin   (2003-11-04 15:25) [6]

но мне надо арифметическую прогрессию, но не
// делай так
for i:=1 to 10 do begin
k:=i*10;
а пробовал
for i:=1 to 10 do begin
k:=i+10;
не работает


 
Anatoly Podgoretsky   (2003-11-04 15:29) [7]

Зачем извращения, для этого существует цикл while, которые позволяет изменять порядок прохода и использовать не только перечислимые типы.


 
denmin   (2003-11-04 15:58) [8]

-> Зачем извращения, для этого существует цикл while, которые позволяет изменять порядок прохода и использовать не только перечислимые типы.

Спасибо.


 
Skier   (2003-11-04 15:58) [9]

>denmin © (04.11.03 15:02)

> Можно ли в For задать шаг.

Есть хорошая веСЧь Continue называется. Иногда помогает.
А вообще-то смотри [7]


 
Regis   (2003-11-04 23:43) [10]

Вообще

for i := 1 to 10 do
k := i * 10;

это и есть арифметическая прогрессия ...


 
Mihey   (2003-11-05 00:26) [11]

Имхо нужно выработать общий алгоритм:

Step := 10;
N := 100;
For i := 1 to (N div Step) do
begin
i := i * Step;
end;


 
Slavian   (2003-11-05 00:41) [12]

а вы while использовать не пробовали?
i:=0
while i<= 100 do begin
i:=i+5
//....
end;
и всё. не обязательно всё через for делать!


 
default   (2003-11-05 01:54) [13]

а зачем для арифметической прогрессии какие-то циклы?
вроде формулы есть...


 
Спрашивающий_   (2003-11-05 04:22) [14]

Repeat
Что то делаем
Inc(I,шаг) или Dec(I,шаг);

Until до чего то


 
default   (2003-11-05 04:23) [15]

Slavian © (05.11.03 00:41) [12]
прочитай сабж


 
Думкин   (2003-11-05 05:30) [16]

Ровное повторение вчерашнего цирка.
Ответ дан первым же постом - но ... Колумбам несть числа.


 
Beginner3000   (2003-11-05 05:41) [17]

можно и так:
for i := 1 to 10 do
begin
i := i + 9;
...
end;
но имхо по сравнению с [4] это - извращение


 
KSergey   (2003-11-05 08:07) [18]

> [17] Beginner3000 (05.11.03 05:41)
> можно и так:
> for i := 1 to 10 do
> begin
> i := i + 9;
> ...
> end;

Не надо обманывать народ!

Цитата и Тейксерры, Пачеко "D5...":
" Внимание!: ...начиная с D2 присвоение значений счетчику цикла в теле этого цикла недопустимо." (стр. 102)

Впрочем, если бы вы потрудились проверить свой совет - то наткнулись бы на ошибку компиляции.


 
NAlexey   (2003-11-05 08:13) [19]

>присвоение значений счетчику цикла в теле этого цикла недопустимо
Всмысле невозможно, или нельзя так делать?


 
NAlexey   (2003-11-05 08:31) [20]

>Впрочем, если бы вы потрудились проверить свой совет - то наткнулись бы на ошибку компиляции.
Можно и не наткнуться на ошибку компиляции:

procedure TForm1.Button1Click(Sender: TObject);
var
I, J: Integer;
procedure Foo;
begin
I := 10;
end;
begin
J := 0;
for I := 1 to 10 do
begin
Inc(J);
if I mod 5 = 0 then
Foo;
end;
ShowMessage(IntToStr(I) + " / " + IntToStr(J));
end;


 
Amoeba   (2003-11-05 11:27) [21]

Не пора ли перенести эту ветку в "Потрепаться"?


 
Stas   (2003-11-05 11:31) [22]

NAlexey © (05.11.03 08:31) [20]

Зачем писать кучу кода, когда можно использовать While ?


 
KSergey   (2003-11-05 11:51) [23]

> [20] NAlexey © (05.11.03 08:31)

Хорошо, как иллюстрация пойдет, однако вы, уверен, не станете это кому-либо рекомендовать?


 
Anatoly Podgoretsky   (2003-11-05 11:51) [24]

Amoeba (05.11.03 11:27) [21]
С чего бы?


 
vpman   (2003-11-05 12:56) [25]


> Не пора ли перенести эту ветку в "Потрепаться"?

Явно пора.


 
app   (2003-11-05 13:04) [26]

Спасибо, но модератор сам решит, а вот продолжение настаивать на этом привед у удалению сообщеий, как не по теме.


 
NAlexey   (2003-11-05 13:04) [27]

>Хорошо, как иллюстрация пойдет
Иллюстрация чего? Того что так делать нельзя? Или иллюстрация того что всетаки компилятор не ругнется на изменение переменной цикла?
>не станете это кому-либо рекомендовать?
Всем рекомендую так делать и почаще, скучно жить скучно.


 
KSergey   (2003-11-05 13:27) [28]

> [27] NAlexey © (05.11.03 13:04)
> >Хорошо, как иллюстрация пойдет
> Иллюстрация чего? Того что так делать нельзя? Или иллюстрация
> того что всетаки компилятор не ругнется на изменение переменной
> цикла?

Что у компилятора все же ограничены возможности и обдурить его можно ;)
Хотя рискну предположить, что данная техника при определенном подходе может дать непредсказуемый результат после работы оптимизатора. Правда, пример такой составить не удалось. Явно мало по этому вопросу знаю.
Т.е. интересно: как только переменная цикла встречается в какой-либо процедуре (Foo) - тут же оптимизатор прекращает свой любимый трюк с обратным отсчетом переменной. Даже если функция не вызывается в теле цикла. Думаю, так следано на всякий случай: мало ли какие хитрые связи вздумает программист замудрить в теле цикла. То же присходит при получении адреса переменной цикла, даже если его и не использовать никак...

> Всем рекомендую так делать и почаще, скучно жить скучно.

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


 
KSergey   (2003-11-05 13:29) [29]

[28] KSergey © (05.11.03 13:27)
Что у компилятора все же ограничены возможности и обдурить его можно ;)


Имелись в виду возможности по телепатии. ;) Да и просто по разбору как же программа будет реально работать, что в чем-то так же сродни телепатии, т.к. выполнять программы компилятор не умеет. ;)



Страницы: 1 вся ветка

Текущий архив: 2003.11.17;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.01 c
14-56886
Rauf
2003-10-26 02:40
2003.11.17
СОРРИ, прошу прощения!!! На сервер закачка + ПЕРЛ, почитать где?


4-56964
jonni
2003-09-19 01:34
2003.11.17
Перетаскивание окна


6-56804
BlackSun
2003-09-21 19:11
2003.11.17
Ras+определение скорости коннекта


6-56795
MAY
2003-09-22 20:13
2003.11.17
Delphi7, Indy9.0 - отправка почты


1-56581
Слэш2
2003-11-06 10:41
2003.11.17
Hint в combobox





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский