Tarpeellinen
PascalABC. NET- tai PascalTurbo-ohjelmointiympäristö
Ohjeet
Vaihe 1
Joten ensin avataan ohjelma. Luodaan uusi tiedosto ja määritetään laajennukset. Tässä tapauksessa tarvitsemme moduulin konsolin kanssa työskentelyyn - CRT.
tätä varten kirjoitamme:
käyttää
CRT;
Vaihe 2
Ilmoitetaan muuttujat i, s, m - todellisen tyypin muuttujat.
var
i, s, m: Todellinen;
Vaihe 3
Aloita ohjelma kirjoittamalla:
alkaa
Ja ilmoitamme konsoli-ikkunan otsikon:
SetWindowTitle ('sekuntikello');
Vaihe 4
TextColor-menettely antaa tekstille värin, ja Write-käsky näyttää tekstin näytölle:
TextColor (vaaleanvihreä);
WriteLn ('Paina Enter aloittaaksesi sekuntikellon');
WriteLn ('Paina uudelleen lopettaaksesi');
Kirjoita ('Aloita alusta napsauttamalla uudelleen');
Loppu Ln siirtyy seuraavalle riville.
Vaihe 5
ReadLn-operaattori syöttää arvot näppäimistöltä, mutta tässä tapauksessa se vain odottaa, että käyttäjä osuu Enter:
LuettuLn;
Vaihe 6
Teemme loputtoman silmukan:
kun (tosi) tehdä
alkaa
While (true) do begin -konstruktio kääntyy seuraavasti: While (ehto) do (). Miksi täällä alkaa?
Tässä tapauksessa tarvitsemme yhdistelmäoperaattorin, mikä tarkoittaa, että vaikka ehto on totta, useita operaattoreita suoritetaan. Jos se ei olisi alkanut, niin sen jälkeen kun suoritettiin vain yksi käsky, mikä johtaisi virheelliseen ohjelman toimintaan. Lopuksi While-lause lopetetaan kirjoittamalla loppu.
Vaihe 7
Palataan nyt laskuri:
i: = 0;
Vaihe 8
Seuraava lause tarkoittaa: kunnes do () -näppäintä painetaan.
kun sitä ei paineta näppäimellä
alkaa
ClrScr-operaattori tyhjentää ruudun:
ClrScr;
Vaihe 9
Asetamme ehdon: jos sekunnit ovat yli 60 ja alle 3600 (tämä on tarpeen, jotta kun aika on yli tunti, ohjelma tulostaa vain sen, mikä on kolmannen jälkeen, jos), sitten:
jos (i> 60) ja (i <3600) sitten alkavat
Muuttuja m (minuuttia) on yhtä suuri kuin: sekunnit jaettuna 60: llä ja pyöristettynä eteenpäin.
m: = Int (i / 60);
Ja muuttuja s (sekunnit ilman minuutteja) on yhtä suuri kuin: kaikki sekunnit miinus minuutit kerrottuna 60: llä.
s: = i - m * 60;
Vaihe 10
Write-käsky kirjoittaa, kuinka monta minuuttia ja sekuntia on kulunut, ja loppulauseke lopettaa alun työn if-ehdon mukaisesti:
Kirjoita (m, 'minuuttia (s) ja', s: 1: 2, 'sekuntia (s)')
loppu;
Toiminto: 1: 2 tarkoittaa, että sekunnit tulisi kirjoittaa kahdella desimaalilla.
Vaihe 11
Jos sekunnit ovat alle 60, kirjoita vain kuinka monta sekuntia on kulunut kahden desimaalin tarkkuudella:
jos i <60 silloin
Kirjoita ('', i: 1: 2, 'sekuntia (a / s)');
Vaihe 12
Jos sekuntia on yli 3600 (eli yli tunti), toimi seuraavasti:
jos i> 3600 sitten alkaa
m: = Int (i / 60);
s: = i - m * 60;
ch: = Int (m / 60);
m: = m - ch * 60;
Kirjoita (ch, 'tunti (t)', m, 'minuutit (s) ja', s: 1: 2, 'sekunnit (s)');
loppu;
Vaihe 13
Joten, ohjelma kirjoitti, että 0 sekuntia on kulunut, nyt se kasvattaa laskuria i 10 millisekunnilla, ja koska ohjelma tekee kaiken heti, viivästymme samaan aikaan:
i: = i + 0,01;
Viive (10);
Seuraavaksi teemme loppu While (ei näppäilemätöntä) -lauseketta:
loppu;
Jos käyttäjä painaa Enter-näppäintä, ohjelma odottaa, että hän painaa sitä uudelleen aloittaakseen sekuntikellon uudelleen:
Readln;
Readln;
Ei ole sattumaa, että laskuri asetetaan nollaksi While (true) -lausekkeen jälkeen, koska kun käyttäjä painaa Enter-näppäintä toisen kerran, ohjelma käynnistyy sieltä, nollaa laskurin ja alkaa laskea uudelleen.
Seuraavaksi lopetamme While ja koko ohjelman:
loppu;
Vaihe 14
Tässä on täydellinen ohjelma:
käyttää
CRT;
var
i: todellinen;
s: Todellinen;
m: Todellinen;
ch: Todellinen;
alkaa
SetWindowTitle ('sekuntikello');
TextColor (vaaleanvihreä);
WriteLn ('Paina Enter aloittaaksesi sekuntikellon');
WriteLn ('Paina uudelleen lopettaaksesi');
Kirjoita ('Aloita alusta napsauttamalla uudelleen');
LuettuLn;
kun (tosi) tehdä
alkaa
i: = 0;
kun sitä ei paineta näppäimellä
alkaa
ClrScr;
jos (i> 60) ja (i <3600) sitten alkavat
m: = Int (i / 60);
s: = i - m * 60;
Kirjoita (m, 'minuuttia (s) ja', s: 1: 2, 'sekuntia (s)')
loppu;
jos i <60 silloin
Kirjoita ('', i: 1: 2, 'sekuntia (a / s)');
jos i> 3600 sitten alkaa
m: = Int (i / 60);
s: = i - m * 60;
ch: = Int (m / 60);
m: = m - ch * 60;
Kirjoita (ch, 'tunti (t)', m, 'minuuttia (s) ja', s: 1: 2, 'sekuntia (s)');
loppu;
i: = i + 0,01;
Viive (10);
loppu;
Readln;
Readln;
loppu;
loppuun.
Vaihe 15
Se ei osoittautunut kovin mukavaksi, mutta ohjelma toimii oikein!