Kerakli
PascalABC. NET yoki PascalTurbo dasturlash muhiti
Ko'rsatmalar
1-qadam
Shunday qilib, avval dasturni ochamiz. Keling, yangi fayl yaratamiz va plaginlarni aniqlaymiz. Bunday holda, bizga konsol bilan ishlash uchun modul kerak - CRT.
Buning uchun biz yozamiz:
foydalanadi
CRT;
2-qadam
I, s, m o'zgaruvchilarni ko'rsataylik - haqiqiy turdagi o'zgaruvchilar.
var
i, s, m: haqiqiy;
3-qadam
Dasturni boshlash uchun quyidagilarni yozing:
boshlash
Va biz konsol oynasining sarlavhasini ko'rsatamiz:
SetWindowTitle ('sekundomer');
4-qadam
TextColor protsedurasi matnga rang beradi va Write operatori matnni ekranga chiqaradi:
TextColor (LightGreen);
WriteLn ('Sekundomerni boshlash uchun Enter tugmasini bosing');
WriteLn ('To'xtatish uchun yana bir marta bosing');
Yozing ('Boshidan boshlash uchun yana bir marta bosing');
Ln tugashi keyingi qatorga o'tadi.
5-qadam
ReadLn operatori klaviaturadan qiymatlarni kiritadi, ammo bu holda foydalanuvchi Enter tugmachasini bosishini kutadi:
ReadLn;
6-qadam
Biz cheksiz pastadir qilamiz:
esa (rost) qil
boshlash
While (true) do begin construct quyidagicha tarjima qilinadi: While (shart) do (). Nima uchun bu erda boshlanadi?
Bunday holda, biz aralash operatorga muhtojmiz, demak, shart to'g'ri bo'lsa ham, bir nechta operatorlar bajariladi. Agar u boshlanmagan bo'lsa, u holda While-dan so'ng dasturning noto'g'ri ishlashiga olib keladigan bitta so'z bajarildi. Oxirida While bayonotini tugatish uchun end deb yozamiz.
7-qadam
Endi hisoblagichni tiklaymiz:
i: = 0;
8-qadam
Quyidagi gap quyidagicha tarjima qilinadi: do () tugmasi bosilguncha.
tugmachani bosmasdan esa
boshlash
ClrScr operatori ekranni tozalaydi:
ClrScr;
9-qadam
Biz shart qo'ydik: agar soniyalar 60 dan oshiq va 3600 dan kam bo'lsa (bu vaqt bir soatdan oshganda, dastur faqat uchinchisidan keyingisini yozadi, agar shunday bo'lsa), unda:
agar (i> 60) va (i <3600) bo'lsa, boshlang
M (daqiqa) o'zgaruvchiga teng: soniyalar 60 ga bo'linib, old tomonga yaxlitlanadi.
m: = Int (i / 60);
Va s o'zgaruvchisi (soniyasiz daqiqalar) tengdir: minus minuslarning 60 soniga ko'paytirilgan barcha soniyalar.
s: = i - m * 60;
10-qadam
Write iborasi necha daqiqa va soniya o'tganligini yozadi va end operatori if sharti bo'yicha start ishini tugatadi:
Yozing (m, 'daqiqa (s) va', s: 1: 2, 'soniya (s)')
oxiri;
Funktsiya: 1: 2 soniyalarni ikki kasrli kasr bilan yozish kerakligini anglatadi.
11-qadam
Agar soniyalar 60 dan kam bo'lsa, unda ikkita o'nlik kasr bilan qancha soniya o'tganligini yozing:
agar i <60 bo'lsa
Yozing ('', i: 1: 2, 'soniya (a / s)');
12-qadam
Agar soniyalar 3600 dan ortiq bo'lsa (ya'ni, bir soatdan ko'proq) bo'lsa:
agar i> 3600 bo'lsa, unda boshlang
m: = Int (i / 60);
s: = i - m * 60;
ch: = Int (m / 60);
m: = m - ch * 60;
Yozing (ch, 'soat (lar)', m, 'daqiqalar (lar) va' ', s: 1: 2,' soniyalar (lar) ');
oxiri;
13-qadam
Shunday qilib, dastur 0 soniya o'tganligini yozdi, endi u hisoblagichni 10 millisekundaga oshiradi va dastur hamma narsani bir zumda bajarishi sababli biz bir xil vaqtga kechiktiramiz:
i: = i + 0.01;
Kechikish (10);
So'ngra, biz (tugmachani bosmagan) iborasini oxiriga etkazamiz:
oxiri;
Agar foydalanuvchi Enter tugmachasini bosgan bo'lsa, dastur sekundomerni qayta ishga tushirish uchun uni yana bosishini kutadi:
Readln;
Readln;
While (true) iborasidan keyin biz hisoblagichni nolga qo'yganimiz bejiz emas, chunki foydalanuvchi ikkinchi marta Enter tugmachasini bosganda dastur o'sha yerdan boshlanadi, hisoblagichni qayta o'rnatadi va yana hisoblashni boshlaydi.
So'ngra, butun dastur va vaqtni tugatamiz:
oxiri;
14-qadam
Mana to'liq dastur:
foydalanadi
CRT;
var
i: haqiqiy;
s: haqiqiy;
m: haqiqiy;
ch: haqiqiy;
boshlash
SetWindowTitle ('sekundomer');
TextColor (LightGreen);
WriteLn ('Sekundomerni boshlash uchun Enter tugmasini bosing');
WriteLn ('To'xtatish uchun yana bir marta bosing');
Yozing ('Boshidan boshlash uchun yana bir marta bosing');
ReadLn;
esa (rost) qil
boshlash
i: = 0;
tugmachani bosmasdan esa
boshlash
ClrScr;
agar (i> 60) va (i <3600) bo'lsa, unda boshlang
m: = Int (i / 60);
s: = i - m * 60;
Yozing (m, 'daqiqa (s) va', s: 1: 2, 'soniya (s)')
oxiri;
agar i <60 bo'lsa
Yozing ('', i: 1: 2, 'soniya (a / s)');
agar i> 3600 bo'lsa, unda boshlang
m: = Int (i / 60);
s: = i - m * 60;
ch: = Int (m / 60);
m: = m - ch * 60;
Yozing (ch, 'soat (lar)', m, 'daqiqalar (lar) va' ', s: 1: 2,' soniyalar (lar) ');
oxiri;
i: = i + 0.01;
Kechikish (10);
oxiri;
Readln;
Readln;
oxiri;
oxiri.
15-qadam
Bu juda yoqimli emas edi, lekin dastur to'g'ri ishlaydi!