Zəruri
PascalABC. NET və ya PascalTurbo proqramlaşdırma mühiti
Təlimat
Addım 1
Beləliklə, əvvəlcə proqramı açaq. Gəlin yeni bir fayl yaradaq və plaginləri təyin edək. Bu vəziyyətdə konsolla işləmək üçün bir modula ehtiyacımız var - CRT.
bunun üçün yazacağıq:
istifadə edir
CRT;
Addım 2
İ, s, m dəyişənlərini - həqiqi tipin dəyişənlərini göstərək.
var
i, s, m: Real;
Addım 3
Proqramı başlamaq üçün yazın:
başlamaq
Və konsol pəncərəsinin başlığını göstərəcəyik:
SetWindowTitle ('Saniyəölçən');
Addım 4
TextColor proseduru mətnə bir rəng təyin edir və Write ifadəsi mətni ekrana göstərir:
TextColor (LightGreen);
WriteLn ('Saniyəölçənə başlamaq üçün Enter düyməsini basın');
WriteLn ('Dayandırmaq üçün yenidən basın');
Yaz ('Yenidən başlamaq üçün yenidən vurun');
Son Ln növbəti sətrə keçir.
Addım 5
ReadLn operatoru klaviaturadan dəyərlər daxil edir, lakin bu halda istifadəçinin Enter düyməsini vurmasını gözləyir:
ReadLn;
Addım 6
Sonsuz bir döngə edirik:
halbuki (doğru) edin
başlamaq
While (true) do begin construct belə tərcümə olunur: while (vəziyyət) do (). Niyə burada başlayır?
Bu vəziyyətdə birləşmiş operatora ehtiyacımız var, yəni şərt doğru olduğu halda bir neçə operator icra olunur. Əgər başlamamış olsaydı, o vaxtdan sonra, proqramın səhv işləməsinə səbəb olan yalnız bir cümlə icra edildi. While ifadəsini sonda bitirmək üçün end yazırıq.
Addım 7
İndi sayğacı sıfırlayaq:
i: = 0;
Addım 8
Aşağıdakı cümlə belə tərcümə olunur: do () düyməsinə basılana qədər.
düyməni basmadığı halda
başlamaq
ClrScr operatoru ekranı təmizləyir:
ClrScr;
Addım 9
Şərti qoyduq: saniyələr 60-dan çox və 3600-dən azdırsa (bu bir saatdan çox olduqda, proqram yalnız üçüncüsündən sonra olanları yazdırarsa) lazımdır:
(i> 60) və (i <3600) olduqda başlayın
Dəyişən m (dəqiqə) bərabərdir: saniyələr 60-a bölünür və ön tərəfə yuvarlanır.
m: = Int (i / 60);
Və s dəyişən (dəqiqəsiz saniyə) bərabərdir: bütün saniyə mənfi dəqiqə 60-a vurulur.
s: = i - m * 60;
Addım 10
Yaz ifadəsi neçə dəqiqə və saniyənin keçdiyini yazır və bitiş ifadəsi aşağıdakı şərtdən sonra başlama işini bitirir:
Yazın (m, 'dəqiqə (lər) və', s: 1: 2, 'saniyə (lər)')
son;
İşlev: 1: 2 saniyələrin iki ondalık basamaqla yazılması deməkdir.
Addım 11
Saniyələr 60-dan azdırsa, onda iki onluq ilə neçə saniyə keçdiyini yaz:
i <60 olarsa
Yaz ('', i: 1: 2, 'saniyə (a / s)');
Addım 12
Saniyələr 3600-dən çoxdursa (yəni bir saatdan çoxdur), onda:
i> 3600 varsa, başlayın
m: = Int (i / 60);
s: = i - m * 60;
ch: = Int (m / 60);
m: = m - ch * 60;
Yaz (ch, 'hour (s)', m, 'minutes (s) and', s: 1: 2, 'seconds (s)');
son;
Addım 13
Beləliklə, proqram 0 saniyə keçdiyini yazdı, indi sayğacı i 10 milisaniyəyə artırdı və proqram hər şeyi anında etdiyindən eyni zamanda bir gecikmə edirik:
i: = i + 0.01;
Gecikmə (10);
Sonra, While (düyməyə basılmamış) ifadəsinin sonunu veririk:
son;
İstifadəçi Enter düyməsini basdısa, proqram saniyəölçənə yenidən başlamaq üçün onu yenidən basmasını gözləyir:
Readln;
Readln;
While (true) ifadəsindən sonra sayğacı sıfıra təyin etməyimiz təsadüfi deyil, çünki istifadəçi ikinci dəfə Enter düyməsini basdıqda proqram oradan başlayacaq, sayğacı yenidən quracaq və yenidən saymağa başlayacaq.
Sonra, while və bütün proqram üçün son veririk:
son;
Addım 14
Tam proqram:
istifadə edir
CRT;
var
i: həqiqi;
s: Real;
m: həqiqi;
ch: həqiqi;
başlamaq
SetWindowTitle ('Saniyəölçən');
TextColor (LightGreen);
WriteLn ('Saniyəölçənə başlamaq üçün Enter düyməsini basın');
WriteLn ('Dayandırmaq üçün yenidən basın');
Yaz ('Yenidən başlamaq üçün yenidən vurun');
ReadLn;
halbuki (doğru) edin
başlamaq
i: = 0;
düyməni basmadığı halda
başlamaq
ClrScr;
(i> 60) və (i <3600) olduqda başlayın
m: = Int (i / 60);
s: = i - m * 60;
Yazın (m, 'dəqiqə (lər) və', s: 1: 2, 'saniyə (lər)')
son;
i <60 olarsa
Yaz ('', i: 1: 2, 'saniyə (a / s)');
i> 3600 olarsa başlayın
m: = Int (i / 60);
s: = i - m * 60;
ch: = Int (m / 60);
m: = m - ch * 60;
Yaz (ch, 'hour (s)', m, 'minutes (s) and', s: 1: 2, 'seconds (s)');
son;
i: = i + 0.01;
Gecikmə (10);
son;
Readln;
Readln;
son;
son
Addım 15
Çox gözəl olmadı, amma proqram düzgün işləyir!