Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.02.19;
Скачать: [xml.tar.bz2];

Вниз

Повторить какуюнибудь процедуру или функцию несколько раз   Найти похожие ветки 

 
Дмитрий_177   (2006-02-03 17:54) [0]

Как лучше всего повторить какуюнибудь процедуру или функцию несколько раз? Я делаю так, если нужно повторить например 10 раз:

var
 i: Byte;

for i := 0 to 9 do
 func

Но вопрос в том, что удачное так использования цикла, если в нем нигде не используется i? или можно еще какнибудь без цикла выполнить процедуру несколько раз?


 
Гошик Кувшинов   (2006-02-03 18:04) [1]

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

только переменную лучше объяви не как байт а как интергер или кардинал - 32-разрядные процессоры с ними быстрее работают, а экономия памяти копеечная


 
Дмитрий_177   (2006-02-03 18:11) [2]

Спасибо... я не знал про Byte с Integer...


 
vrem   (2006-02-03 18:19) [3]

Если на десятом разе функция выдаёт что то определённое, то можно и без переменной цикла. через while

рапира..) наука и жизнь и рассуждения что рапира лучше, Кувшинов, а как Вы к моржеванию относитесь? ;)


 
Zeqfreed ©   (2006-02-03 18:19) [4]

Скорее всего место в стеке под счетчик цикла не будет выделяться, будет использован один из регистров процессора. Так что не стоит экономить на счетчиках цикла :)


 
Gero ©   (2006-02-03 18:22) [5]

Неужели 4 байта это критично?


 
Гошик Кувшинов   (2006-02-03 18:57) [6]

verm

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

а моржевание тут причём? не понял... я только когда тепло купаюсь


 
vrem   (2006-02-03 19:02) [7]

Кувшинов
Товарищ один пропал.. думал ну - а нет.)


 
TUser ©   (2006-02-03 19:45) [8]


> только переменную лучше объяви не как байт а как интергер
> или кардинал - 32-разрядные процессоры с ними быстрее работают,
>  а экономия памяти копеечная

Зато при переходе на integer мы получим немеренное ускорение, аж на 10 итерациях цикла.


 
Anatoly Podgoretsky ©   (2006-02-03 20:44) [9]

TUser ©   (03.02.06 19:45) [8]
Я не уверен, что при использовании байте не будет внутреннего преобразования в Integer.

Кроме того почему цикл от 0 до 9, а не от 2 до 10, что бы в голове делать прибавление единички.

Писать надо сразу правильно, чтобы в будущем не было мучительно стыдно за бездумно потраченые годы.

Теперь по поводу экономии трех байт, если переменная I локальная, то это не экономия, а потери.


 
TUser ©   (2006-02-03 21:55) [10]

> Anatoly Podgoretsky ©   (03.02.06 20:44) [9]

Я говорил неоднократно - на наких тараканах экономить память или увеличивать скорость - бессмысленно. Вы сами говорили, что скорость программы надо мерить будильником. Действительно - если программа работает за 0.00001 секунды, то не надо ускорять. А если за десять минут, то ускорение на 0.00001% ничего не изменит.


 
vidiv ©   (2006-02-03 22:03) [11]


> TUser ©   (03.02.06 21:55) [10]

Это они так... для просвещения :)


 
Германн ©   (2006-02-04 01:38) [12]


> Но вопрос в том, что удачное так использования цикла, если
> в нем нигде не используется i?

Уже много сказано про i, но добавлю ещё капельку. Переменную цикла можно всеми и всегда использовать справа от оператора присваивания. Но вот использование её слева - недопустимо!


 
Loginov Dmitry ©   (2006-02-04 09:21) [13]

Вообще не вижу смысла использовать тип Byte вместо Integer для счетчика цикла (хоть локально, хоть глобально). Одно время были такие причуды - после прочтения книжки по ассемблеру старался экономить на каждом байте :)
Однако на практике приходилось потом переобъявлять переменные, как Integer.

P.S. Экономьте только там, где экономия реально нужна.


 
YurikGL ©   (2006-02-04 09:53) [14]


> var
>  i: Byte;
>
> for i := 0 to 9 do
>  func

ИМХО лучше

var
 i: integer;

for i := 1 to 10 do
 func


 
Anatoly Podgoretsky ©   (2006-02-04 13:06) [15]

vidiv ©   (03.02.06 22:03) [11]
Это не мне дали 15 суток, а нам, чтобы ты мог проводить воспитательную работу.
(С) Операция Ы


 
Дмитрий_177   (2006-02-04 13:41) [16]

А вот по поводу цикла... что лучше от 0 до 9 или от 1 до 10... Мне почему-то казалось что лучше от 0 до 9...)))


 
sniknik ©   (2006-02-04 13:49) [17]

> Мне почему-то казалось что лучше от 0 до 9...)))
ну если разговор об экономии (ресурсы/время) то лучше с 9 downto 0, но на это оптимизатор и сам исправит.


 
Дмитрий_177   (2006-02-04 14:04) [18]

а в чем разница? 0->9 и 9->0? :)


 
sniknik ©   (2006-02-04 14:15) [19]

в выходе из цикла, проверка на 0 после операции гораздо "легче" чем сравнение переменной с конкретным числом. а так как такая проверка идет в каждой итерации цикла... есть небольшой выигрыш во времени.
(впрочем может для нынешних процессоров нет разницы на операторы (не в курсе)... но раньше точно была и оптимизатор "настроен" на тоже, то что есть.)



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

Форум: "Начинающим";
Текущий архив: 2006.02.19;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.042 c
11-1112893795
Димитрий
2005-04-07 21:09
2006.02.19
Ошибка компиляции модуля kol.pas


15-1138301130
Nikolay M.
2006-01-26 21:45
2006.02.19
Подработать никто не хочет?


2-1138686124
Mike48
2006-01-31 08:42
2006.02.19
315-й вопрос про ehlib


4-1133583459
тт
2005-12-03 07:17
2006.02.19
Как узнать серийный номер жесткого диска?


15-1138610774
Opilki_Inside
2006-01-30 11:46
2006.02.19
Посоветуйте хороший XML-редактор.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский