จำเป็น
สภาพแวดล้อมการเขียนโปรแกรม PascalABC. NET หรือ PascalTurbo
คำแนะนำ
ขั้นตอนที่ 1
ก่อนอื่นเรามาเปิดโปรแกรมกันก่อน มาสร้างไฟล์ใหม่และระบุปลั๊กอินกัน ในกรณีนี้ เราจำเป็นต้องมีโมดูลสำหรับการทำงานกับคอนโซล - CRT
สำหรับสิ่งนี้เราจะเขียน:
ใช้
ซีอาร์ที;
ขั้นตอนที่ 2
ให้เราระบุตัวแปร i, s, m - ตัวแปรประเภทจริง
var
ผม, s, m: จริง;
ขั้นตอนที่ 3
ในการเริ่มโปรแกรม ให้เขียน:
เริ่ม
และเราจะระบุชื่อของหน้าต่างคอนโซล:
SetWindowTitle ('นาฬิกาจับเวลา');
ขั้นตอนที่ 4
ขั้นตอน TextColor กำหนดสีให้กับข้อความ และคำสั่ง Write จะแสดงข้อความไปที่หน้าจอ:
TextColor (สีเขียวอ่อน);
WriteLn ('กด Enter เพื่อเริ่มนาฬิกาจับเวลา');
WriteLn ('กดอีกครั้งเพื่อหยุด');
เขียน ('คลิกอีกครั้งเพื่อเริ่มต้นใหม่');
Ln สิ้นสุดจะย้ายไปที่บรรทัดถัดไป
ขั้นตอนที่ 5
ตัวดำเนินการ ReadLn ป้อนค่าจากแป้นพิมพ์ แต่ในกรณีนี้ก็แค่รอให้ผู้ใช้กด Enter:
อ่าน Ln;
ขั้นตอนที่ 6
เราทำการวนซ้ำไม่รู้จบ:
ในขณะที่ (จริง) do
เริ่ม
while (true) do start construct แปลว่า ในขณะที่ (เงื่อนไข) ทำ () ทำไมถึงเริ่มต้นที่นี่?
ในกรณีนี้ เราจำเป็นต้องมีตัวดำเนินการแบบผสม ซึ่งหมายความว่าในขณะที่เงื่อนไขเป็นจริง ตัวดำเนินการหลายตัวจะถูกดำเนินการ หากไม่ใช่สำหรับการเริ่มต้น หลังจาก while จะมีการดำเนินการเพียงคำสั่งเดียว ซึ่งจะทำให้การทำงานของโปรแกรมไม่ถูกต้อง ในการสิ้นสุดคำสั่ง while ในตอนท้าย เราเขียน end
ขั้นตอนที่ 7
ตอนนี้เรามารีเซ็ตตัวนับ:
ผม: = 0;
ขั้นตอนที่ 8
คำสั่งต่อไปนี้แปลว่า: จนกว่าจะกดปุ่ม do ()
ในขณะที่ไม่ได้กดแป้น do
เริ่ม
ตัวดำเนินการ ClrScr จะล้างหน้าจอ:
ClrScr;
ขั้นตอนที่ 9
เราตั้งค่าเงื่อนไข: หากวินาทีมากกว่า 60 และน้อยกว่า 3600 (นี่เป็นสิ่งจำเป็นเพื่อที่ว่าเมื่อเวลามากกว่าหนึ่งชั่วโมง โปรแกรมจะพิมพ์เฉพาะสิ่งที่อยู่หลังวินาทีที่สามหาก) จากนั้น:
ถ้า (i> 60) และ (i <3600) ก็เริ่มต้น
ตัวแปร m (นาที) เท่ากับ: วินาทีหารด้วย 60 และปัดเศษขึ้นด้านหน้า
ม.: = Int (i / 60);
และตัวแปร s (วินาทีไม่มีนาที) เท่ากับ: วินาทีทั้งหมดลบนาทีคูณด้วย 60
s: = ผม - ม. * 60;
ขั้นตอนที่ 10
คำสั่งเขียนจะเขียนจำนวนนาทีและวินาทีที่ผ่านไป และคำสั่งสิ้นสุดจะสิ้นสุดการทำงานของการเริ่มต้นตามเงื่อนไข if:
เขียน (m, 'minutes (s) and', s: 1: 2, 'seconds (s)')
จบ;
ฟังก์ชัน: 1: 2 หมายความว่าควรเขียนวินาทีด้วยทศนิยมสองตำแหน่ง
ขั้นตอนที่ 11
หากวินาทีนั้นน้อยกว่า 60 ให้เขียนว่าผ่านไปกี่วินาทีโดยมีทศนิยมสองตำแหน่ง:
ถ้าฉัน <60 แล้ว
เขียน ('', i: 1: 2, 'วินาที (a / s)');
ขั้นตอนที่ 12
หากวินาทีมีค่ามากกว่า 3600 (นั่นคือ มากกว่าหนึ่งชั่วโมง) ให้ทำดังนี้
ถ้า i> 3600 ก็เริ่มต้น
ม: = Int (i / 60);
s: = ผม - ม. * 60;
ch: = Int (ม. / 60);
ม.: = ม. - ช * 60;
เขียน (ch, 'hour (s)', m, 'minutes (s) และ', s: 1: 2, 'seconds (s)');
จบ;
ขั้นตอนที่ 13
ดังนั้นโปรแกรมจึงเขียนว่าผ่านไป 0 วินาที ตอนนี้มันเพิ่มตัวนับ i ขึ้น 10 มิลลิวินาที และเนื่องจากโปรแกรมทำทุกอย่างในทันที เราจึงทำการหน่วงเวลาในเวลาเดียวกัน:
ผม: = ผม + 0.01;
ล่าช้า (10);
ต่อไป เราจะทำการสิ้นสุดคำสั่ง while (ไม่กดแป้น):
จบ;
หากผู้ใช้กดปุ่ม Enter โปรแกรมจะรอให้เขากดอีกครั้งเพื่อเริ่มนาฬิกาจับเวลาอีกครั้ง:
อ่าน;
อ่าน;
ไม่ใช่เรื่องบังเอิญที่เราตั้งค่าตัวนับเป็นศูนย์หลังจากคำสั่ง while (จริง) เพราะเมื่อผู้ใช้กด Enter ครั้งที่สอง โปรแกรมจะเริ่มจากที่นั่น รีเซ็ตตัวนับ และเริ่มนับใหม่อีกครั้ง
ต่อไป เราจะสิ้นสุดการ while และสำหรับโปรแกรมทั้งหมด:
จบ;
ขั้นตอนที่ 14
นี่คือโปรแกรมที่สมบูรณ์:
ใช้
ซีอาร์ที;
var
ฉัน: จริง;
s: จริง;
ม: จริง;
ช: จริง;
เริ่ม
SetWindowTitle ('นาฬิกาจับเวลา');
TextColor (สีเขียวอ่อน);
WriteLn ('กด Enter เพื่อเริ่มนาฬิกาจับเวลา');
WriteLn ('กดอีกครั้งเพื่อหยุด');
เขียน ('คลิกอีกครั้งเพื่อเริ่มต้นใหม่');
อ่าน Ln;
ในขณะที่ (จริง) do
เริ่ม
ผม: = 0;
ขณะไม่กดแป้น do
เริ่ม
ClrScr;
ถ้า (i> 60) และ (i <3600) ก็เริ่มต้น
ม.: = Int (i / 60);
s: = ผม - ม. * 60;
เขียน (m, 'minutes (s) and', s: 1: 2, 'seconds (s)')
จบ;
ถ้าฉัน <60 แล้ว
เขียน ('', i: 1: 2, 'วินาที (a / s)');
ถ้า i> 3600 ก็เริ่มต้น
ม.: = Int (i / 60);
s: = ผม - ม. * 60;
ch: = Int (ม. / 60);
m: = m - ch * 60;
เขียน (ch, 'hour (s)', m, 'minutes (s) และ', s: 1: 2, 'seconds (s)');
จบ;
ผม: = ผม + 0.01;
ล่าช้า (10);
จบ;
อ่าน;
อ่าน;
จบ;
จบ.
ขั้นตอนที่ 15
มันกลับกลายเป็นว่าไม่ค่อยดีนัก แต่โปรแกรมทำงานได้อย่างถูกต้อง!