Programowanie w języku Pascal » FAQ

Czas od włączenia programu

  • 2007-03-06 22:58
  • 10 komentarzy
  • 1279 odsłon
  • Oceń ten tekst jako pierwszy
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

10 komentarzy

dark4b 2008-12-05 03:55

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 =|

Autre 2008-02-01 17:22

I te komentarze, "}" tam gdzie jest to zbędne

Autre 2008-02-01 17:21

Odnoszę wrażenie, że więcej pisałeś pisałeś w C niż w Pascalu. Charakteryzuje to begin na końcu lini po instrukcji....

Future Knight 2007-08-19 00:51

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

Nark 2006-08-07 22:32

czy mi się wydaje, czy niepotrzebny jest moduł DOS?;] wybaczcie, że się czepiam, ale jakoś tak mi się w oczy rzuciło;]

ŁF 2004-11-06 12:55

brak wcięć, brak formatowania, brak komentarzy, delay(1000) to nie jest równo sekunda... ehh...

wasyl 2004-11-05 16:00

I uzywaj tagu delphi

endrique 2004-11-05 14:16

jako że jesteś jeszcze młody, to postaram się być delikatny żeby Cię nie zniechęcić, ale następnym razem:
1. zrób krótki opis (np. po co to? w jakim języku)
2. Staraj się wymyślać jakieś ciekawsze tematy, których jeszcze nie było.
3. stosuj wcięcia i odpowiednio formatuj kod.
To tyle na wstępie. pozdrawiam.

Irekk 2004-11-05 20:19

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

fatalbomb 2005-11-11 21:42

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...