Nodig
PascalABC. NET of PascalTurbo-programmeeromgewing
Instruksies
Stap 1
Laat ons eers die program oopmaak. Kom ons skep 'n nuwe lêer en spesifiseer die invoegtoepassings. In hierdie geval het ons 'n module nodig om met die konsole te werk - CRT.
hiervoor sal ons skryf:
gebruike
CRT;
Stap 2
Laat ons die veranderlikes i, s, m - veranderlikes van die werklike tipe aandui.
var
i, s, m: Regte;
Stap 3
Om die program te begin, skryf:
begin
En ons sal die titel van die konsolevenster aandui:
SetWindowTitle ('Stophorlosie');
Stap 4
Die TextColor-prosedure ken 'n kleur aan die teks toe en die Skryf-stelling wys die teks op die skerm:
TextColor (liggroen);
WriteLn ('Druk Enter om stophorlosie te begin');
WriteLn ('Druk weer om te stop');
Skryf ('Klik weer om oor te begin');
Die einde Ln beweeg na die volgende reël.
Stap 5
Die ReadLn-operateur voer waardes vanaf die sleutelbord in, maar in hierdie geval wag dit net vir die gebruiker om Enter te druk:
LeesLn;
Stap 6
Ons maak 'n eindelose lus:
terwyl (waar) doen
begin
Die while (waar) konstruksie begin vertaal as: While (condition) doen (). Waarom word hier begin?
In hierdie geval het ons 'n saamgestelde operateur nodig, wat beteken dat alhoewel die voorwaarde waar is, verskeie operateurs uitgevoer word. As dit nie sou begin nie, is slegs een verklaring na die tyd uitgevoer wat sou lei tot verkeerde programwerking. Om die While-stelling aan die einde te beëindig, skryf ons end.
Stap 7
Laat ons nou die toonbank weer instel:
i: = 0;
Stap 8
Die volgende stelling vertaal as: totdat die do () -knop gedruk word.
terwyl jy nie op die sleutel druk nie
begin
Die ClrScr-operateur maak die skerm skoon:
ClrScr;
Stap 9
Ons stel die voorwaarde in: as die sekondes meer is as 60 en minder as 3600 (dit is nodig sodat die tyd as die tyd langer as 'n uur is, slegs die volgende druk na die derde as):
as (i> 60) en (i <3600) dan begin
Die veranderlike m (minute) is gelyk aan: sekondes gedeel deur 60 en afgerond na voor.
m: = Int (i / 60);
En die veranderlike s (sekondes sonder minute) is gelyk aan: alle sekondes minus minute vermenigvuldig met 60.
s: = i - m * 60;
Stap 10
Die Skryfverklaring skryf hoeveel minute en sekondes verby is, en die eindverklaring beëindig die werk van die begin na die as-voorwaarde:
Skryf (m, 'minute (s) en', s: 1: 2, 'sekondes (s)')
einde;
Funksie: 1: 2 beteken dat sekondes met twee desimale plekke geskryf moet word.
Stap 11
As die sekondes minder as 60 is, skryf net hoeveel sekondes met twee desimale plekke verby is:
as ek <60 dan
Skryf ('', i: 1: 2, 'sekondes (a / s)');
Stap 12
As die sekondes meer is as 3600 (dit wil sê meer as 'n uur), dan:
as ek> 3600 is, begin dan
m: = Int (i / 60);
s: = i - m * 60;
ch: = Int (m / 60);
m: = m - ch * 60;
Skryf (ch, 'uur (s)', m, 'minute (s) en', s: 1: 2, 'sekondes (s)');
einde;
Stap 13
Die program het geskryf dat 0 sekondes verby is, en dit verhoog die teller i met 10 millisekondes, en aangesien die program alles onmiddellik doen, stel ons dieselfde tyd uit:
i: = i + 0,01;
Vertraag (10);
Vervolgens maak ons die einde vir die While-stelling (nie ingedruk nie):
einde;
As die gebruiker op die Enter-toets gedruk het, wag die program op hom om dit weer te druk om die stophorlosie weer te begin:
Leesln;
Leesln;
Dit is nie toevallig dat ons die teller na die While (ware) verklaring op nul stel nie, want wanneer die gebruiker 'n tweede keer op Enter druk, sal die program van daar af begin, die teller herstel en weer begin tel.
Vervolgens eindig ons die While en vir die hele program:
einde;
Stap 14
Hier is die volledige program:
gebruike
CRT;
var
i: Regtig;
s: Regte;
m: Regte;
ch: Regte;
begin
SetWindowTitle ('Stophorlosie');
TextColor (liggroen);
WriteLn ('Druk Enter om stophorlosie te begin');
WriteLn ('Druk weer om te stop');
Skryf ('Klik weer om oor te begin');
LeesLn;
terwyl (waar) doen
begin
i: = 0;
terwyl jy nie op die sleutel druk nie
begin
ClrScr;
as (i> 60) en (i <3600) dan begin
m: = Int (i / 60);
s: = i - m * 60;
Skryf (m, 'minute (s) en', s: 1: 2, 'sekondes (s)')
einde;
as ek <60 dan
Skryf ('', i: 1: 2, 'sekondes (a / s)');
as ek> 3600 is, begin dan
m: = Int (i / 60);
s: = i - m * 60;
ch: = Int (m / 60);
m: = m - ch * 60;
Skryf (ch, 'uur (s)', m, 'minute (s) en', s: 1: 2, 'sekondes (s)');
einde;
i: = i + 0,01;
Vertraag (10);
einde;
Leesln;
Leesln;
einde;
einde.
Stap 15
Dit was nie baie lekker nie, maar die program werk reg!