ПредишенСледващото

Често при програмирането в някои области на програмата е необходимо да се измерва времето на изпълнение на кода, а други просто не спират изпълнението на известно време. Например, ако напишете в играта, трябва да се напише код, който ще се ограничи скоростта на играта. Разбира се, ако играта е много tyazheloya, а след това за известно време то може да съществува без такава запушалка. Но с течение на времето, способностите за обработка на компютри се разраства (все още не е на себе си) и игри, без ограничаване на скоростта, става невъзможно да се играе. Или сте решили да напише еталон за процесора. Там вече се нуждаят от много точни средства за измерване на времето за изпълнение. Такива примери са много. Просто да кажа, че всяко по-- menie програма сериозно, е необходимо измерването на времето. За съжаление редовни средства в Паскал ограничени процедура Забавяне на тази, описана в модул CRT. Но това е силно зависима от работата на системата. Разбира се, можете да използвате процедура GetTime, но това е доста тромава. А стандартни процедури за измерване на времето за изпълнение на кода не добавките.

Е, не! Ние не чайник? Разбира се, не кана! Напиши себе си. Когато пишете програми последователен код се опитва да се слеят tsykl. Кодът се повтаря в Програма издържат в отделни процедури и функции. Код, който очевидно не е ispolzovat в една програма, да вземе в модули. Ние ще направим така. Да се ​​създаде Паскал TIMER.PAS файл и да започнете. Както знаете името на модула и файлът трябва да бъде същото, пее напишете:

На следващо място, трябва да се създаде предния край модул. Тук нека да спре и да видим какво имаме нужда. На първо място, ние се нуждаем от средства за измерване на времето за изпълнение. Второ средства за спиране на програми в определени часове. Освен това, когато спря да се наложи да продукция време е изтекло.

интерфейс
процедура Старт (Var T: longint);
процедура Stop (Var T: longint);
процедура Пауза (Т: longint; Покажи: булева);

Така че ние EDN три процедури. Пускане и спиране на процедурите ще бъдат използвани за измерване на времето за изпълнение на код, и ще замени Пауза закъснение. Разпръснати T - събужда да служи за предаване на данните от време. Покажи - за да разрешите или забраните времето до екрана. По-долу е част от изпълнителната власт. Той се използва за обявяване на местните константи, променливи и типове. В този модул, ние не се нуждаем:

Това, което следва, е най-интересното. Може би се чудите как един и същ начин, ние ще се произвеждат измерване на времето? А защо не и ispolzavat таймер хардуер? Tembolee е много проста:

SystemTimer: longint абсолютен $ 0040: $ 006C;

процедура Старт (Var T: longint);
започвам
Т: = SystemTimer;
приключи;
процедура Stop (Var T: longint);
започвам
Т: = SystemTimer-T;
приключи;

процедура Пауза (Т: longint; Покажи: булева);
Var Xn, Xt: longint;
започвам
Xt: = 0;
Xn: = SystemTimer;
Докато ((Xt-Xn) /18.2) * 1000 започвам
Xt: = SystemTimer;
Ако след това Show
writeln ((XT-хп) /18.2:6:4)
приключи;
приключи;

Е, дългоочакваното

Всички компилирате. Просто искам да се провери работата, нали?

Програма TimerPrimer;
използва таймер;
Var аз. цяло число;
A: Real;
Time. LongInt;
започвам
Случаен;
Start (Time);
Защото: = 1-30000 направи
а: = Sin (SQRT (I)) * Cos (SQRT (Random (10000)));
Stop (Time);
Writeln ( "Време за:" Време / 18,2: 6: 4);
readln;
Пауза (10000, True);
край.

Тази програма показва възможностите modutya таймер. В началото тя се tsykl от 1 до 30000 в която изчислява стойността на. Изпълнението на тази tsykla, измерване на нашите пускане и спиране на процедурите. После, след като чака натискане на Enter паузите за 10.000 секунди позволи процедура Pause носене на изхода на екрана.

Свързани статии

Подкрепете проекта - споделете линка, благодаря!