powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Забыл "фундамент", напомните, плиз :)
9 сообщений из 9, страница 1 из 1
Забыл "фундамент", напомните, плиз :)
    #39313142
Фотография neznajka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вроде и стыдно спрашивать о таком пустяке, но - уж слишком давно не занимался программированием, позабывал даже многие азы :(
В общем, вопрос:
Код: plaintext
1.
2.
3.
 m.asd=ALLTRIM(fileDBF.pole)
 FOR i=1 TO LEN(m.asd)
  ...команды...
 ENDFOR
При выполнении вышеприведённого цикла в программе - будет ли выражение
Код: plaintext
LEN(m.asd)
ПЕРЕвычисляться на каждом витке? Или же компилятор вычислит его один раз и запомнит до конца цикла?
Помню, где-то когда-то, вроде, читал, что умные компиляторы предварительно вычисляют такие пункты программы единственный раз, а затем просто используют в нужный момент эти предварительно вычисленные значения. Только не помню - о Фокспро ли там писалось, или о какой-то другой среде программирования...
В общем - подскажите, пожалуйста.
...
Рейтинг: 0 / 0
Забыл "фундамент", напомните, плиз :)
    #39313150
neznajka,
Добавьте внутрь цикла команду изменения длины вашей строки и объизучайтесь хоть до постижения.
...
Рейтинг: 0 / 0
Забыл "фундамент", напомните, плиз :)
    #39313179
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вычислится один раз.
...
Рейтинг: 0 / 0
Забыл "фундамент", напомните, плиз :)
    #39313180
Фотография neznajka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
правильный проходящий.,
Спасибо, до этого я и сам додумался было. Но - гложет червь сомнения :) - а вдруг для такого случая "умный" компилятор имеет отдельный сценарий "поведения"? :)
...
Рейтинг: 0 / 0
Забыл "фундамент", напомните, плиз :)
    #39313183
Фотография neznajka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,
Спасибо! А есть где почитать об этом применительно к Фоксу? Подкиньте ссылочку, пожалуйста.
...
Рейтинг: 0 / 0
Забыл "фундамент", напомните, плиз :)
    #39313209
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
neznajkaDima T,
Спасибо! А есть где почитать об этом применительно к Фоксу? Подкиньте ссылочку, пожалуйста.
Не знаю где почитать. Как выше советовали - проверить элементарно.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
s = '123'
for i = 1 to mylen(s)
	if i = 1
		s = s + '4'
	endif
endfor
return

func mylen
lpara tcS
? tcS
return len(tcS)


Компилятор фокса не сильно умный. Был бы умный, то при изменении строки пересчитал бы ее длину.
Да и не компилятор он, а интерпретатор.
...
Рейтинг: 0 / 0
Забыл "фундамент", напомните, плиз :)
    #39313453
Фотография neznajka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,
Спасибо, всё доступно и понятно. А я пробовал проверять немного по-другому: во 2-м варианте программы я в заголовок цикла ставил не напрямую выражение LEN(m.asd), а переменную m.vr=LEN(m.asd), вычисленную ДО цикла, и замерял время Seconds(ДО_Перед_циклом)-Seconds(ПОСЛЕ_Цикла) при обработке заведомо большого количества записей. Затем сравнивал это время с аналогичным временем 1-го варианта цикла (как в начале темы). Правда, замеченная мной разница оказалась не принципиальной, и может быть объяснена другими причинами. Ваш способ проверки - надёжней :)
-------------
Только насчёт "компилятор-интерпретатор" - надо же! А я всегда полагал, что раз в Фоксовом прг-шнике НЕ выполняется СРАЗУ ЖЕ каждая нововведённая строка (как в ДОС-Бейсике), значит Фокс является компилятором (возможно, за исключением командного окна). Да и в ФоксХелпе везде пестрят термины "compiler", "compilling", и т.п.
Ну да ладно, интерпретатор - так интерпретатор :)
...
Рейтинг: 0 / 0
Забыл "фундамент", напомните, плиз :)
    #39313463
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Компиляция есть, но смысл ее в другом. PRG компилируется в FXP. Но FXP это не бинарный код для процессора, а байт-код для интерпретатора.

Для строчного выполнения есть окно Command (Ctrl+F2)
...
Рейтинг: 0 / 0
Забыл "фундамент", напомните, плиз :)
    #39313492
Фотография neznajka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,
Спасибо за разъяснение. Пусть уж и интерпретатором будет - главное, мне нравится, как он работает :)
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Забыл "фундамент", напомните, плиз :)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]