71 (199)

71 (199)



Rozdział 4. • Zagadnienia trudniejsze 107

która powoduje wydanie dźwięku o zadanej częstotliwości i długości.

program cw4_18;

{    Program jest prostym    zegarkiem,    wyświetlającym    }

{    aktualna godzinę, az    do wciśnięcia    klawisza    przez    }

{    użytkownika.    }

{    Katalog r4_03 : 4_18.pas    }

uses

Crt,

Dos;

var

Godzina, Minuta, Sekunda, SlOO : Word;

OstatniaDzwonionaGodzina : Word;

function UzupO (N : Word) : String;

{ Funkcja zwraca łańcuch reprezentujący podana liczbę }

{ uzupełniony z przodu zerem, o ile liczba jest mniejsza }

{ od 10.    }

var

StrPom : String; begin

Str (N ; 2, StrPom);

if StrPom[l] - ' ' then StrPom[l] 'O';

UzupO StrPom;

end; {------------------------------------------- UzupO -}

begin

ClrScr;

OstatniaDzwonionaGodzina    0;

repeat

GetTime (Godzina, Minuta, Sekunda, SlOO);

GotoXY (37, 12);

Write (UzupO(Godzina),    , UzupO(Minuta),    UzupO(Sekunda));

if ((Minuta-0) and (Godzina <> OstatniaDzwonionaGodzina)) then begin

OstatniaDzwonionaGodzina Godzina;

Sound (1000); Delay (200); NoSound; end;

Delay (200); until Keypressed; end.

W wypadku, kiedy godzina jest jednocyfrowa (a więc odczytana zmienna Godzina też), wypisanie jej po prostu na ekranie wyglądałoby nie najlepiej (nie wspomnę już o minutach i sekundach). Dlatego korzystamy z funkcji, która w takich przypadkach uzupełnia je zerem z przodu (oczywiście jej wynikiem jest już String).

Warto zauważyć, że aby uniknąć kilkukrotnego sygnalizowania nadejścia nowej godziny (zmienna Minuta będzie miała przez wiele przebiegów pętli w ciągu pierwszej minuty każdej godziny wartość 0), wykorzystujemy zmienną pamiętającą, czy zegar już ją wybijał

(OstatniaDzwonionaGodzina).

Próbuj zmieniać długość przerwy (parametru procedury Delay) i obserwować wyświetlanie czasu.

Ten sposób wyświetlania czasu ma jedną wadę — program jest całkowicie zaabsorbowany obliczaniem aktualnej godziny, a reszta programu (gdybyśmy ją dopisali) musiałaby zostać podporządkowana temu stylowi programowania. Użycie instrukcji Readln zablokowałoby


Wyszukiwarka

Podobne podstrony:
73 (179) Rozdział 4. • Zagadnienia trudniejsze 109 Gotowy: Boolean; begin Randomize; Prawidłowe 0; ■
75 (174) Rozdział 4. • Zagadnienia trudniejsze 111uses Crt; var Miesiąc : Byte; NazwaMiesiaca :
77 (175) Rozdział 4. • Zagadnienia trudniejsze 113 Oto przykładowe poprawne deklaracje typów i
79 (169) Rozdział 4. • Zagadnienia trudniejsze 115 program cw4_23; { Program pokazujący działanie fu
81 (160) Rozdział 4. • Zagadnienia trudniejsze 117 Przykładowa deklaracja typu opisującego osobę moż
83 (158) Rozdział 4. • Zagadnienia trudniejsze 119 Readln (Wypos); Samochód.DodatkoweWyposazenieCI]
85 (147) Rozdział 4. • Zagadnienia trudniejsze 121 Początek i koniec programu (czyli wpisanie i wypi
10 Rozdział I. Zagadnienia wprowadzające Ad 6) Kryminalistyka Kryminalistyka jest nauką, która zajmu
71 Rozdział 4 Konstrukcje stalowe Opcja Z BOKU powoduje narysowanie profilu wybranego ty pu i rozmia
6 Rozdział I. Zagadnienia wprowadzające Prawo karne wykonawcze jest gałęzią prawa, która obejmuje no
skanuj0032 (71) 222 Rozdział 6. Język i mass media: znaczące płaszczyzny komunikacji 222 Rozdział 6.
skanuj0072 (20) 76 Lit.: Zarz.MON, 1971, nr 68; Przepisy ubiorcze, nr 45-71; Madej. s. 32-33: Chodyń
skanuj0600 Rozdział 7 Ocena potencjału strategicznego przedsiębiorstwa 199 Rozdział 7 Ocena pot
Rozdział 1 ■    Praca dyplomowa magisterska, która może dotyczyć

więcej podobnych podstron