:: Игры Разума
DO WHILE для новичков
Foxtrot

Сообщений: 3408
Откуда: Куда:
Дата регистрации: 25.04.2003
имееца след.код
CREATE CURSOR tcursor (i I)
INDEX ON i TO i
FOR i=0 TO 9
INSERT INTO tcursor VALUES (m.i)
ENDFOR
GO TOP
k=0
DO WHILE EOF()=.F.
REPLACE i WITH i-1
k=k+1
SKIP
ENDDO
*!* ?k
вапрос: чему буит равно k?
ps продолжение следует..


------------------
Мойте ноги, моя ноги вы моете и руки




Исправлено 2 раз(а). Последнее : Foxtrot, 11.12.08 06:44
Ratings: 0 negative/0 positive
Re: DO WHILE для новичков
Snick

Сообщений: 5949
Откуда: Москва
Дата регистрации: 21.05.2001
DO WHILE EOF()=.F.
Это специально для затруднения читабельности такую конструкцию поставил?


------------------
www.sngsnick.com

Ratings: 0 negative/0 positive
Re: DO WHILE для новичков
Foxtrot

Сообщений: 3408
Откуда: Куда:
Дата регистрации: 25.04.2003
странно както, но в действительности было первоначально так !EOF()
а перед самым непосредственно постом заменил на то, что есть, почимута подумал, что так читабельнее
ну так что с ответом? хотя вапрос наверное не для Вас, Николай
не стану тянуть с продолжением, а оно такое: нуна заменить во второй строке операнд TO на TAG


------------------
Мойте ноги, моя ноги вы моете и руки
Ratings: 0 negative/0 positive
Re: DO WHILE для новичков
Zakharov

Сообщений: 25
Откуда: Киев
Дата регистрации: 09.12.2008
Цикл крутится по количеству записей. k=10
Ratings: 0 negative/0 positive
Re: DO WHILE для новичков
Sawradym

Сообщений: 2244
Откуда: Винница
Дата регистрации: 15.05.2007
11


------------------
Ratings: 0 negative/0 positive
Re: DO WHILE для новичков
Zakharov

Сообщений: 25
Откуда: Киев
Дата регистрации: 09.12.2008
Ну почему?!!
цикл от 0 до 0 - к=1
от 0 до 1 к= 2
...
от 0 до 9 к=10
али я чего не понял?
Ratings: 0 negative/0 positive
Re: DO WHILE для новичков
Влад Колосов

Сообщений: 22664
Откуда: Ростов-на-Дону
Дата регистрации: 05.05.2005
10 конечно, т.к. К от 0.


------------------
Совершенство - это не тогда, когда нельзя
ничего прибавить, а тогда, когда нечего убавить.
Ratings: 0 negative/0 positive
Re: DO WHILE для новичков
Foxtrot

Сообщений: 3408
Откуда: Куда:
Дата регистрации: 25.04.2003
ребята, ну шо вы тута гадаете, точный ответ мона получить тока из среды фокса;)
этот пост тока для вашей же самопроверки, не более


------------------
Мойте ноги, моя ноги вы моете и руки
Ratings: 0 negative/0 positive
Re: DO WHILE для новичков
Igor Korolyov
Автор

Сообщений: 34580
Дата регистрации: 28.05.2002
Я вообще не вижу тут никаких сложностей... Сложности будут если вместо
REPLACE i WITH i-1
поставить
REPLACE i WITH i+1
...
Или если индекс сделать в обратном порядке - DESC...

А от INDEX ... TO или INDEX ... TAG в данном случае ничего не зависит IMHO.


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: DO WHILE для новичков
Zakharov

Сообщений: 25
Откуда: Киев
Дата регистрации: 09.12.2008
А при чем здесь k (к индексу) вообще?
Ratings: 0 negative/0 positive
Re: DO WHILE для новичков
Igor Korolyov
Автор

Сообщений: 34580
Дата регистрации: 28.05.2002
k просто считает циклы - т.е. вопрос состоит в том, сколько итераций будет в этом цикле. А индекс как раз таки способен влиять на число итераций в подобных циклах.


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: DO WHILE для новичков
Zakharov

Сообщений: 25
Откуда: Киев
Дата регистрации: 09.12.2008
Индекс влияет на число итераций только тогда, когда написано
Index On ... To ... For <условие выборки>
А когда мы вставили десять записей (от 0 до 9), а потом:
Go top
do while !eof()
...
skip
enddo
то и прокрутится этот цикл 10 раз независимо от расположения записей
Ratings: 0 negative/0 positive
Re: DO WHILE для новичков
ssa

Сообщений: 13007
Откуда: Москва
Дата регистрации: 23.03.2005
Zakharov
Индекс влияет на число итераций только тогда, когда написано
Index On ... To ... For <условие выборки>
....
то и прокрутится этот цикл 10 раз независимо от расположения записей
Ну-ну...
Вместо
REPLACE i WITH i-1
поставь
REPLACE i WITH i+2
и посмотри.

------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: DO WHILE для новичков
Zakharov

Сообщений: 25
Откуда: Киев
Дата регистрации: 09.12.2008
БОЛВАН! Согласен.
Ratings: 0 negative/0 positive
Re: DO WHILE для новичков
Sawradym

Сообщений: 2244
Откуда: Винница
Дата регистрации: 15.05.2007
Sawradym
11

Поспешил, как всегда. Когда отвечал думал о RecNo() :doom:


------------------
Ratings: 0 negative/0 positive
Re: DO WHILE для новичков
Zakharov

Сообщений: 25
Откуда: Киев
Дата регистрации: 09.12.2008
Просто трогать переменную цикла (или условие цикла) меня отучили давно. Когда-то (тоже давно) я написал что-то вроде
For i=1 to n
...
i=i-1
...
EndFor
(Вообще-то это было на ФОРТРАНЕ, а час машинного времени стоил 70 руб-советских)с тех пор я понял, что нехорошо изменять условия цикла внутри цикла.
Ratings: 0 negative/0 positive
Re: DO WHILE для новичков
Igor Korolyov
Автор

Сообщений: 34580
Дата регистрации: 28.05.2002
Дело в том, что это не совсем "переменная цикла". Более наглядно эта особенность проявляется в цикле SCAN - там вообще никаких SKIP нету, тем не менее активный индекс существенно влияет на число итераций. А если ещё принять во внимание то, как табличная буферизация влияет на подобные циклы - в примере надобно написать
SET MULTILOCKS ON
CURSORSETPROP("Buffering", 5)
после создания курсора...


------------------
WBR, Igor
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 2 (Гостей: 2)

© 2000-2024 Fox Club 
Яндекс.Метрика