Czas od włączenia programu
OperativSark
uses dos,crt;
var
godzina,minuta,sekunda:integer;
begin
godzina:=0;
minuta:=0;
sekunda:=0;
repeat
sekunda:=sekunda+1;
if sekunda=60 then begin
minuta:=minuta+1;
sekunda:=0;
end;
if minuta=60 then begin
godzina:=godzina+1;
minuta:=0;
end;
writeln(godzina,':',minuta,':',sekunda);
delay(1000); // 1000 to jedna sekunda
clrscr;
until godzina=24 // czyli bedzie to powtarzac poki nie minie jeden dzien}
end.
Można też inaczej...
Ciekawy sposób jak to zrobić w kilku linijkach:
var timer : LongInt absolute $40:$6c;
start : LongInt;
begin
start:=timer;
{a teraz w dowolnym fragmencie kodu}
WriteLn('Minelo ',((timer-start)/18.2):5:3, 's.');
end.
dlaczego tak się dzieje?
w adresie pamięci $40:$6c znajduje się liczba tyknięć zegara od północy. Tyknięcie następuje co ok. 1/18.2 sek. więc gdy mamy aktualną liczbę tyknięć i liczbę tyknięć na początku programu można wyznaczyć czas w dowolnym momencie, bez korzystania z dodatkowych modułów
delay(1000) 1000 = 1s to zależy od procesora według mnie bo pracowałem na bardzo wolnym robiłem to musiałem wpisać bardzo dużą wartość prawie maksymalną by się czas zatrzymał na ułamek sekundy, a na moim 2 rdzeniowym procku wpisałem 60000 to dało mi równe 2 minuty =|
I te komentarze, "}" tam gdzie jest to zbędne
Odnoszę wrażenie, że więcej pisałeś pisałeś w C niż w Pascalu. Charakteryzuje to begin na końcu lini po instrukcji....
Delay moi drodzy nie będzie nigdy dokładnie równę:a mianowicie dlatego że to jest czas PRZYBLIŻONY: znaczy że na innym sprzęcie jest inaczej, a czasem raz trafi się tak, raz tak, przynajmniej tak jest u mnie: testowałem na moim staruszku (jeszcze z 99r. :S) i na nowiuśkim kompie: na nowym 1000 wyglądało jak 0,7 sec, na starszym czasem było tak czasem tak, ogólnie to pomiędzy 0,9-0,7... Artykuł dość dobry, można przynajmniej coś z niego się nauczyć: zwłaszcza z komentarzy :D:D
czy mi się wydaje, czy niepotrzebny jest moduł DOS?;] wybaczcie, że się czepiam, ale jakoś tak mi się w oczy rzuciło;]
brak wcięć, brak formatowania, brak komentarzy, delay(1000) to nie jest równo sekunda... ehh...
I uzywaj tagu delphi
jako że jesteś jeszcze młody, to postaram się być delikatny żeby Cię nie zniechęcić, ale następnym razem:
To tyle na wstępie. pozdrawiam.
bez jakiegoś konkretnego opisu to szkoda głowy zawracać, bo niektórzy po samym tytule "czas trwania programu" nie wiele zrozumieją, a to ma być chyba dla każdego
Co prawda według helpa Delay (X) daje dokładnie X milisekund opóźnienia. Ale tak było za czasów 286 :-). Na moim kompie Delay (65000) daje niecałe 750 ms...